最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

python處理PDF文件入門(mén)

2023-06-11 12:26 作者:dupaper  | 我要投稿

首先安裝mupdf的包

打開(kāi)文件,如果打開(kāi)不受支持的文件,則PyMuPDF將拋出文件數(shù)據(jù)錯(cuò)誤。

讀取一個(gè)PDF文件,循環(huán)頁(yè)面,讀取內(nèi)容,寫(xiě)入到一個(gè)txt中

get_text(opt,?*,?clip=None,?flags=None,?textpage=None,?sort=False)

參數(shù):

opt?(str) –表示要求的格式的字符串,是上述格式之一。支持大寫(xiě)和小寫(xiě)混合。

在v1.16.3版本中進(jìn)行了修改,現(xiàn)在也接受 "words "和 "blocks "的值。

clip?(rect-like) –?(v1.17.7版新增)將提取的文本限制在這個(gè)矩形范圍內(nèi)。如果沒(méi)有,則提取整個(gè)頁(yè)面的內(nèi)容。對(duì)選項(xiàng) "html"、"xhtml "和 "xml "沒(méi)有影響。

flags?(int) –(v1.16.2版新增)指標(biāo)位,用于控制是否包括圖像或如何處理文本的空白和連字符??捎玫闹笜?biāo)見(jiàn)文本提取標(biāo)志,默認(rèn)設(shè)置見(jiàn)文本提取標(biāo)志默認(rèn)值。

textpage?– (v1.19.0版新增)使用先前創(chuàng)建的TextPage。這大大減少了執(zhí)行時(shí)間:根據(jù)提取選項(xiàng)的不同,可減少50%以上,最高可達(dá)95%。如果指定了,"flags "和 "clip "參數(shù)將被忽略,因?yàn)樗鼈兪侵粚儆谖谋卷?yè)的屬性。如果省略,將創(chuàng)建一個(gè)新的、臨時(shí)的文本頁(yè)。

sort?(bool) – (v1.19.1中的新內(nèi)容)按垂直坐標(biāo)、然后是水平坐標(biāo)對(duì)輸出進(jìn)行排序。在許多情況下,這應(yīng)該足以產(chǎn)生一個(gè) "自然 "的閱讀順序。對(duì)(X)HTML和XML沒(méi)有影響。輸出選項(xiàng) "單詞 "按單詞的bboxes的(y1, x0)排序。對(duì)于 "block"、"dict"、"json"、"rawdict"、"rawjson "也是如此:它們都是按照相應(yīng)塊的bbox的(y1, x0)排序。如果指定為 "text",那么在內(nèi)部則使用 "blocks"。

返回類(lèi)型:str, list, dict

返回:頁(yè)面的內(nèi)容是一個(gè)字符串、一個(gè)列表或一個(gè)字典。詳情請(qǐng)參考相應(yīng)的TextPage方法。


從PDF中提取圖像

page.get_images()? 僅限PDF:返回一個(gè)由頁(yè)面引用的圖像的列表。是Document.get_page_images()的封裝器。

合并PDF文件

將PDF文件與其他類(lèi)型的文件合并

為PDF添加水印

添加水印本質(zhì)上就像在每個(gè)PDF頁(yè)面的底部添加圖像一樣簡(jiǎn)單。應(yīng)該確保圖像具有所需的不透明度和縱橫比,以使其看起來(lái)符合您的需要。在上面的示例中,每個(gè)文件引用都創(chuàng)建了一個(gè)新圖像,但為了提高性能(通過(guò)節(jié)省內(nèi)存和文件大?。搱D像數(shù)據(jù)應(yīng)該只被引用一次 - 請(qǐng)參閱代碼示例和實(shí)現(xiàn)說(shuō)明Page.insert_image()。

insert_image(rect,?filename=None,?pixmap=None,?stream=None,?mask=None,?rotate=0,?alpha=-1,?oc=0,?xref=0,?keep_proportion=True,?overlay=True)

僅限PDF:在給定的矩形內(nèi)放置一個(gè)圖像。該圖像可能已經(jīng)存在于PDF中,或者是從一個(gè)像素圖、一個(gè)文件或一個(gè)內(nèi)存區(qū)域中獲取。

參數(shù):

rect?(rect_like) – 放置圖像的地方。必須是有限的并且不是空的。

filename?(str) – 圖像文件的名稱(chēng)(MuPDF支持的所有格式,見(jiàn)支持的輸入圖像格式)。

stream?(bytes,bytearray,io.BytesIO) –內(nèi)存中的圖像(MuPDF支持的所有格式--見(jiàn)支持的輸入圖像格式)。在v1.14.13版本中改變了:現(xiàn)在也支持io.BytesIO了。

pixmap?(Pixmap) – 一個(gè)包含圖像的像素圖.

mask?(bytes,bytearray,io.BytesIO) –?(v1.18.1版新增)內(nèi)存中的圖像 - 作為基礎(chǔ)圖像的圖像掩碼(alpha值)。當(dāng)指定時(shí),必須以文件名或流的形式提供基礎(chǔ)圖像,而且不能是已經(jīng)有遮罩的圖像。.

xref?(int) –?(v1.18.13版新增)PDF中已經(jīng)存在的圖像的xref。如果給出,參數(shù)文件名、Pixmap、stream、alpha和?mask?將被忽略。頁(yè)面將簡(jiǎn)單地接收一個(gè)對(duì)現(xiàn)有圖像的引用。

alpha?(int) –?(在v1.19.3版中改變)已廢棄。不再需要--給定時(shí)被忽略。.

rotate?(int) –(在v1.14.11版本中新增)旋轉(zhuǎn)圖像。必須是90度的整數(shù)倍。正值的旋轉(zhuǎn)是逆時(shí)針旋轉(zhuǎn)。如果你需要任意角度的旋轉(zhuǎn),可以考慮先將圖像轉(zhuǎn)換為PDF(Document.convert_to_pdf()),然后用Page.show_pdf_page()代替。?

oc?(int) – (v1.18.3版新增)(xref)使圖像的可見(jiàn)性依賴(lài)于這個(gè)OCG或OCMD。在多次插入的第一次之后被忽略。該屬性與生成的PDF圖像對(duì)象一起存儲(chǔ),因此在整個(gè)PDF中控制圖像的可見(jiàn)性。

keep_proportion?(bool) –?(v1.14.11版新增)保持圖像的長(zhǎng)寬比。

返回類(lèi)型:int

返回:嵌入圖像的xref。如果再次插入圖像,這可以作為xref參數(shù),獲得非常顯著的性能提升。


旋轉(zhuǎn)PDF?

set_rotation(rotate)?僅限PDF:設(shè)置頁(yè)面的旋轉(zhuǎn)。
參數(shù):
rotate (int) - 一個(gè)整數(shù),指定所需的旋轉(zhuǎn)度數(shù)。必須是90的整數(shù)倍。值將被轉(zhuǎn)換為0、90、180、270中的一個(gè)。

裁剪PDF

要將頁(yè)面裁剪為定義的Rect

set_cropbox(r)??僅限PDF:改變頁(yè)面的可見(jiàn)部分。

參數(shù):

r (rect_like) - 頁(yè)面的新可見(jiàn)區(qū)域。注意,這必須以未旋轉(zhuǎn)的坐標(biāo)指定,不是空的,也不是無(wú)限的,并且完全包含在Page.mediabox中。

附加文件

要將另一個(gè)文件附加到頁(yè)面(相當(dāng)于添加了另一個(gè)文件的鏈接),附件的默認(rèn)圖標(biāo)是“圖釘”,但是您可以通過(guò)設(shè)置參數(shù)來(lái)更改它icon

add_file_annot(pos,?buffer,?filename,?ufilename=None,?desc=None,?icon='PushPin')

參數(shù):

pos?(point_like) – 包含MuPDF提供的 "PushPin "圖標(biāo)的18x18矩形的左上角點(diǎn)。

buffer?(bytes,bytearray,BytesIO) –緩沖區(qū)。要存儲(chǔ)的數(shù)據(jù)(實(shí)際的文件內(nèi)容,任何數(shù)據(jù),等等)。

filename?(str) – 與數(shù)據(jù)有關(guān)的文件名。

ufilename?(str) – 文件名的可選PDF單字節(jié)碼版本。默認(rèn)為文件名。

desc?(str) – 文件的可選描述。默認(rèn)為文件名。

icon?(str) –?v1.16.0版新增)選擇 "PushPin"(默認(rèn))、"Graph"、"Paperclip"、"Tag "中的一個(gè)作為附加數(shù)據(jù)的視覺(jué)符號(hào)。

返回類(lèi)型:Annot

返回:創(chuàng)建的注釋。筆觸顏色黃色=(1,1,0),不支持填充顏色。

嵌入文件

要將文件嵌入文檔,與附加文件一樣,添加文件時(shí)請(qǐng)Document.embfile_add()注意,第一個(gè)參數(shù)filename應(yīng)包括實(shí)際文件擴(kuò)展名。

embfile_add(name,?buffer,?filename=None,?ufilename=None,?desc=None)

僅限PDF:嵌入一個(gè)新文件。除名稱(chēng)外,所有的字符串參數(shù)都可以是unicode(在以前的版本中,只有ASCII能正確工作)。文件內(nèi)容將被壓縮(如有好處)。

參數(shù):

name?(str) – 文件名,不能是已有文件。

buffer?(bytes,bytearray,BytesIO) –文件內(nèi)容,現(xiàn)在也支持io.BytesIO。

filename?(str) –可選的文件名。僅限于文檔,如果沒(méi)有,將被設(shè)置為名稱(chēng)。

ufilename?(str) –可選的unicode文件名。僅限文檔,如果沒(méi)有,將被設(shè)置為文件名。

desc?(str) – 可選的描述。僅限文檔,如果沒(méi)有,將被設(shè)置為名稱(chēng)。

返回類(lèi)型:int

返回:該方法現(xiàn)在返回插入的文件的XRef。此外,該文件對(duì)象現(xiàn)在將自動(dòng)獲得基于當(dāng)前日期時(shí)間的PDF鍵/CreationDate和/ModDate。

刪除頁(yè)面

要從文檔中刪除頁(yè)面

要從文檔中刪除多個(gè)頁(yè)面

頁(yè)面索引是從零開(kāi)始的,因此要?jiǎng)h除文檔的第 10 頁(yè),您可以執(zhí)行以下操作doc.delete_page(9)。

同樣,將刪除第 10 - 15 頁(yè)(含)。doc.delete_pages(from_page=9,?to_page=14)

重新排列頁(yè)面

復(fù)制頁(yè)面

選擇頁(yè)面

使用PyMuPDF,您可以使用所有選項(xiàng)來(lái)復(fù)制、移動(dòng)、刪除或重新排列PDF的頁(yè)面。存在允許您逐頁(yè)執(zhí)行此操作的直觀方法,例如方法Document.copy_page()。

或者,您也可以準(zhǔn)備一個(gè)完整的Python序列形式的新頁(yè)面布局,其中包含您想要的頁(yè)碼、您想要的順序以及您想要的每頁(yè)次數(shù)。以下可以說(shuō)明可以做什么Document.select()

doc.select([1, 1, 1, 5, 4, 9, 9, 9, 0, 2, 2, 2])

現(xiàn)在讓我們準(zhǔn)備一個(gè)雙面打印的 PDF(在不直接支持此功能的打印機(jī)上):

頁(yè)數(shù)由len(doc)(等于doc.page_count)給出。以下列表分別表示偶數(shù)頁(yè)碼和奇數(shù)頁(yè)碼:

p_even = [p in range(doc.page_count) if p % 2 == 0]

p_odd? = [p in range(doc.page_count) if p % 2 == 1]

此代碼段創(chuàng)建了相應(yīng)的子文檔,然后可用于打印文檔:

以下示例將反轉(zhuǎn)所有頁(yè)面的順序

此代碼段將 PDF 與自身復(fù)制,以便它將包含頁(yè)面0、1、...、n、0、1、...、n?(速度非常快,并且不會(huì)顯著增加文件大小?。?/p>

添加空白頁(yè)

使用它來(lái)創(chuàng)建具有另一種預(yù)定義紙張格式的頁(yè)面:

便利功能paper_size()知道 40 多種行業(yè)標(biāo)準(zhǔn)紙張格式可供選擇。將所需的字典鍵傳遞給以paper_size()檢索紙張尺寸。支持大小寫(xiě)。如果將“-L”附加到格式名稱(chēng),則返回橫向版本。

paper_size(s)

返回已知紙張格式代碼的寬度和高度的便捷函數(shù)。對(duì)于標(biāo)準(zhǔn)分辨率 72 像素 = 1 英寸,這些值以像素為單位給出。

當(dāng)前定義的格式包括'A0'到'A10'、'B0'到'B10'、'C0'到'C10'、'Card-4x6'、'Card-5x7'、'Commercial'、'Executive'、'Invoice '、'Ledger'、'Legal'、'Legal-13'、'Letter'、'Monarch'和'Tabloid-Extra',每個(gè)都采用縱向或橫向格式。

格式名稱(chēng)必須作為字符串提供(區(qū)分大小寫(xiě)),可以選擇使用“-L”(橫向)或“-P”(縱向)作為后綴。沒(méi)有后綴默認(rèn)為縱向。

參數(shù)

s?(?str?) – 上面的任何格式名稱(chēng),大寫(xiě)或小寫(xiě),如“A4”或“l(fā)etter-l”。

返回類(lèi)型元組

返回:紙張格式的(寬度,高度) 。對(duì)于未知格式,返回(-1, -1) 。示例:fitz.paper_size(“A4”)返回(595, 842)和fitz.paper_size(“l(fā)etter-l”)返回(792, 612)。

插入帶有文本內(nèi)容的頁(yè)面

使用該Document.insert_page()方法還會(huì)插入一個(gè)新頁(yè)面并接受相同的width參數(shù)height。但它還允許您將任意文本插入新頁(yè)面并返回插入的行數(shù)。

文本參數(shù)可以是一個(gè)(序列)字符串(假設(shè)為 UTF-8 編碼)。插入將從點(diǎn)(50, 72)開(kāi)始,該點(diǎn)位于頁(yè)面頂部下方一英寸處,距離左側(cè) 50 點(diǎn)。返回插入的文本行數(shù)。

insert_page(pno,?text=None,?fontsize=11,?width=595,?height=842,?fontname='helv',?fontfile=None,?color=None)

僅限PDF:插入一個(gè)新頁(yè)并插入一些文本。方便的函數(shù),結(jié)合了Document.new_page()和Page.insert_text()的部分。

參數(shù):

pno?(int) –要插入的頁(yè)數(shù)(基數(shù)0)。必須在(-1, doc.page_count + 1)范圍內(nèi)。特殊值-1和doc.page_count在最后一頁(yè)之后插入。

返回類(lèi)型:int

返回:Page.insert_text()的結(jié)果(成功插入的行數(shù))

拆分單個(gè)頁(yè)面

這涉及將PDF頁(yè)面分成任意部分。例如,您可能有一個(gè)包含Letter格式頁(yè)面的PDF,您想要以四倍的放大倍數(shù)打?。好總€(gè)頁(yè)面被分成 4 個(gè)部分,每個(gè)部分再次以Letter格式進(jìn)入一個(gè)單獨(dú)的PDF頁(yè)面。


示例:

合并單個(gè)頁(yè)面

連接PDF頁(yè)面以形成一個(gè)新的PDF,每個(gè)頁(yè)面包含兩個(gè)或四個(gè)原始頁(yè)面(也稱(chēng)為“2-up”、“4-up”等)。這可用于創(chuàng)建小冊(cè)子或類(lèi)似縮略圖的概覽。

示例:

PDF加密解密

從 1.16.0 版本開(kāi)始,完全支持PDF解密和加密(使用密碼)。您可以執(zhí)行以下操作:

  • 檢查文檔是否受密碼保護(hù)/(仍)加密(Document.needs_pass,?Document.is_encrypted)。

  • 獲得文檔的訪問(wèn)權(quán)限 (?Document.authenticate())。

  • Document.save()使用或Document.write()和設(shè)置 PDF 文件的加密細(xì)節(jié)

以下代碼片段創(chuàng)建一個(gè)新的PDF并使用單獨(dú)的用戶和所有者密碼對(duì)其進(jìn)行加密。授予打印、復(fù)制和注釋的權(quán)限,但不允許使用用戶密碼進(jìn)行身份驗(yàn)證的人進(jìn)行任何更改。





python處理PDF文件入門(mén)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
三江| 定安县| 临沧市| 蒲江县| 布尔津县| 剑阁县| 桓台县| 宝山区| 哈尔滨市| 龙游县| 西畴县| 澄迈县| 平顺县| 静安区| 安康市| 东乡县| 含山县| 巩义市| 晋江市| 武城县| 山西省| 和田县| 留坝县| 安乡县| 万全县| 科技| 潮安县| 闽侯县| 珲春市| 康平县| 萨迦县| 栖霞市| 三亚市| 屯昌县| 丹巴县| 包头市| 临清市| 保山市| 依兰县| 和林格尔县| 滕州市|