国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python處理PDF——PyMuPDF的安裝與使用詳解

這篇具有很好參考價(jià)值的文章主要介紹了Python處理PDF——PyMuPDF的安裝與使用詳解。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

???????? ? ? ?


1、PyMuPDF簡介

1. 介紹

在介紹PyMuPDF之前,先來了解一下MuPDF,從命名形式中就可以看出,PyMuPDF是MuPDF的Python接口形式。

MuPDF

MuPDF 是一個(gè)輕量級的 PDF、XPS和電子書查看器。MuPDF 由軟件庫、命令行工具和各種平臺的查看器組成。

MuPDF 中的渲染器專為高質(zhì)量抗鋸齒圖形量身定制。它以精確到像素的幾分之一內(nèi)的度量和間距呈現(xiàn)文本,以在屏幕上再現(xiàn)打印頁面的外觀時(shí)獲得最高保真度。

這個(gè)觀察器很小,速度很快,但是很完整。它支持多種文檔格式,如PDF、XPS、OpenXPS、CBZ、EPUB和FictionBook 2。您可以使用移動查看器對PDF文檔進(jìn)行注釋和填寫表單(這個(gè)功能很快也將應(yīng)用于桌面查看器)。

命令行工具允許您注釋、編輯文檔,并將文檔轉(zhuǎn)換為其他格式,如HTML、SVG、PDF和CBZ。您還可以使用Javascript編寫腳本來操作文檔。

PyMuPDF PyMuPDF(當(dāng)前版本1.18.17)是支持MuPDF(當(dāng)前版本1.18.*)的Python綁定。

使用PyMuPDF,你可以訪問擴(kuò)展名為“.pdf”、“.xps”、“.oxps”、“.cbz”、“.fb2”或“.epub”。此外,大約10種流行的圖像格式也可以像文檔一樣處理:“.png”,“.jpg”,“.bmp”,“.tiff”等。

2. 功能

對于所有支持的文檔類型可以:

  • 解密文件 - ?訪問元信息、鏈接和書簽 - ?以柵格格式(PNG和其他格式)或矢量格式SVG呈現(xiàn)頁面 - ?搜索文本 - ?提取文本和圖像 - ?轉(zhuǎn)換為其他格式:PDF, (X)HTML, XML, JSON, text 對于PDF文檔,存在大量的附加功能:它們可以創(chuàng)建、合并或拆分。頁面可以通過多種方式插入、刪除、重新排列或修改(包括注釋和表單字段)。- ?可以提取或插入圖像和字體 - ?完全支持嵌入式文件 - ?pdf文件可以重新格式化,以支持雙面打印,色調(diào)分離,應(yīng)用標(biāo)志或水印 - ?完全支持密碼保護(hù):解密、加密、加密方法選擇、權(quán)限級別和用戶/所有者密碼設(shè)置 - ?支持圖像、文本和繪圖的 PDF 可選內(nèi)容概念 - ?可以訪問和修改低級 PDF 結(jié)構(gòu)

  • 命令行模塊"python -m fitz…"具有以下特性的多功能實(shí)用程序

    • - 加密/解密/優(yōu)化- 創(chuàng)建子文檔- 文檔連接- 圖像/字體提取- 完全支持嵌入式文件- 保存布局的文本提取(所有文檔) **新:布局保存文本提取!** 腳本`fitzcliy .py`通過子命令`“gettext”`提供不同格式的文本提取。特別有趣的當(dāng)然是布局保存,它生成的文本盡可能接近原始物理布局,周圍有圖像的區(qū)域,或者在表格和多列文本中復(fù)制文本。

2、安裝

PyMuPDF可以從源碼安裝,也可以從wheels安裝。

對于Windows, Linux和Mac OSX平臺,在PyPI的下載部分有wheels。這包括Python 64位版本3.6到3.9。Windows版本也有32位版本。從最近開始,Linux ARM架構(gòu)也出現(xiàn)了一些問題——查找平臺標(biāo)簽manylinux2014_aarch64。

除了標(biāo)準(zhǔn)庫,它沒有強(qiáng)制性的外部依賴項(xiàng)。只有在安裝了某些包時(shí),才會有一些不錯(cuò)的方法:

  • Pillow:當(dāng)使用Pixmap.pil_save()和 Pixmap.pil_tobytes()時(shí)需要- fontTools:當(dāng)使用Document.subset_fonts()時(shí)需要- pymupdf-fonts 是一個(gè)不錯(cuò)的字體選擇,可以用于文本輸出方法使用pip安裝命令:pip install PyMuPDF

導(dǎo)入庫:

import fitz

關(guān)于命名fitz的說明

這個(gè)庫的標(biāo)準(zhǔn)Python導(dǎo)入語句是import fitz。這是有歷史原因的: MuPDF的原始渲染庫被稱為Libart。

在Artifex軟件獲得MuPDF項(xiàng)目后,開發(fā)的重點(diǎn)轉(zhuǎn)移到編寫一種新的現(xiàn)代圖形圖書館稱為“Fitz”。Fitz最初是作為一個(gè)研發(fā)項(xiàng)目,以取代老化的Ghostscript圖形庫,但卻成為了MuPDF的渲染引擎(引用自維基百科)。

3、使用方法

1. 導(dǎo)入庫,查看版本 ?????

import fitz
print(fitz.__doc__)
PyMuPDF 1.18.16: Python bindings for the MuPDF 1.18.0 library.
Version date: 2021-08-05 00:00:01.
Built for Python 3.8 on linux (64-bit).

2. 打開文檔

doc = fitz.open(filename)

這將創(chuàng)建Document對象doc。文件名必須是一個(gè)已經(jīng)存在的文件的python字符串。也可以從內(nèi)存數(shù)據(jù)打開文檔,或創(chuàng)建新的空PDF。您還可以將文檔用作上下文管理器。

3. Document的方法和屬性

|方法/屬性|描述 |------ |Document.page_count|頁數(shù) (int) |Document.metadata|元數(shù)據(jù) (dict) |Document.get_toc()|獲取目錄 (list) |Document.load_page()|讀取頁面

示例: ??

>>> doc.count_page
1
>>> doc.metadata
{<!-- -->'format': 'PDF 1.7',
 'title': '',
 'author': '',
 'subject': '',
 'keywords': '',
 'creator': '',
 'producer': '福昕閱讀器PDF打印機(jī) 版本 10.0.130.3456',
 'creationDate': "D:20210810173328+08'00'",
 'modDate': "D:20210810173328+08'00'",
 'trapped': '',
 'encryption': None}

4. 獲取元數(shù)據(jù)

PyMuPDF完全支持標(biāo)準(zhǔn)元數(shù)據(jù)。Document.metadata是一個(gè)具有以下鍵的Python字典。它適用于所有文檔類型,但并非所有條目都始終包含數(shù)據(jù)。元數(shù)據(jù)字段為字符串,如果未另行指示,則為無。還要注意的是,并非所有數(shù)據(jù)都始終包含有意義的數(shù)據(jù)——即使它們不是一個(gè)都沒有。

|Key|Value |------ |producer|producer (producing software) |format|format: ‘PDF-1.4’, ‘EPUB’, etc. |encryption|encryption method used if any |author|author |modDate|date of last modification |keywords|keywords |title|title |creationDate|date of creation |creator|creating application |subject|subject

5. 獲取目標(biāo)大綱

toc = doc.get_toc()

6. 頁面(Page)

頁面處理是MuPDF功能的核心。? 您可以將頁面呈現(xiàn)為光柵或矢量(SVG)圖像,可以選擇縮放、旋轉(zhuǎn)、移動或剪切頁面。? 您可以提取多種格式的頁面文本和圖像,并搜索文本字符串。? 對于PDF文檔,可以使用更多的方法向頁面添加文本或圖像。

首先,必須創(chuàng)建一個(gè)頁面Page。這是Document的一種方法: ??????

page = doc.load_page(pno) # loads page number 'pno' of the document (0-based)
page = doc[pno] # the short form

這里可以使用任何整數(shù)-inf&lt;pno&lt;page_count。負(fù)數(shù)從末尾開始倒數(shù),所以doc[-1]是最后一頁,就像Python序列一樣。

更高級的方法是將文檔用作頁面的迭代器: ?????

for page in doc:
    # do something with 'page'
    
# ... or read backwards
for page in reversed(doc):
    # do something with 'page'
    
# ... or even use 'slicing'
for page in doc.pages(start, stop, step):
    # do something with 'page'

接下來,主要介紹Page的常用操作!

a. 檢查頁面的鏈接、批注或表單字段

使用某些查看器軟件顯示文檔時(shí),鏈接顯示為==“熱點(diǎn)區(qū)域”==。如果您在光標(biāo)顯示手形符號時(shí)單擊,您通常會被帶到該熱點(diǎn)區(qū)域中編碼的標(biāo)記。以下是如何獲取所有鏈接: ?????

# get all links on a page
links = page.get_links()

links是一個(gè)Python字典列表。

還可以作為迭代器使用: ????

for link in page.links():
    # do something with 'link'

如果處理PDF文檔頁面,還可能存在注釋(Annot)或表單字段(Widget),每個(gè)字段都有自己的迭代器: ??????

for annot in page.annots():
    # do something with 'annot'
    
for field in page.widgets():
    # do something with 'field'

b. 呈現(xiàn)頁面

此示例創(chuàng)建頁面內(nèi)容的光柵圖像:

pix = page.get_pixmap()

pix是一個(gè)Pixmap對象,它(在本例中)包含頁面的RGB圖像,可用于多種用途。

方法Page.get_pixmap()提供了許多用于控制圖像的變體:分辨率、顏色空間(例如,生成灰度圖像或具有減色方案的圖像)、透明度、旋轉(zhuǎn)、鏡像、移位、剪切等。

例如:創(chuàng)建RGBA圖像(即,包含alpha通道),指定pix=page.get_pixmap(alpha=True)。\

Pixmap包含以下引用的許多方法和屬性。其中包括整數(shù)寬度、高度(每個(gè)像素)和跨距(一個(gè)水平圖像行的字節(jié)數(shù))。屬性示例表示表示圖像數(shù)據(jù)的矩形字節(jié)區(qū)域(Python字節(jié)對象)。

還可以使用page.get_svg_image()創(chuàng)建頁面的矢量圖像。

c. 將頁面圖像保存到文件中

我們可以簡單地將圖像存儲在PNG文件中:

pix.save("page-%i.png" % page.number)

d. 提取文本和圖像

我們還可以以多種不同的形式和細(xì)節(jié)級別提取頁面的所有文本、圖像和其他信息:

text = page.get_text(opt)

對opt使用以下字符串之一以獲取不同的格式:

  • "text":(默認(rèn))帶換行符的純文本。無格式、無文字位置詳細(xì)信息、無圖像-?"blocks":生成文本塊(段落)的列表-?"words":生成單詞列表(不包含空格的字符串)-?"html":創(chuàng)建頁面的完整視覺版本,包括任何圖像。這可以通過internet瀏覽器顯示-?"dict"/"json":與HTML相同的信息級別,但作為Python字典或resp.JSON字符串。-?"rawdict"/"rawjson":"dict"/"json"的超級集合。它還提供諸如XML之類的字符詳細(xì)信息。-?"xhtml":文本信息級別與文本版本相同,但包含圖像。-?"xml":不包含圖像,但包含每個(gè)文本字符的完整位置和字體信息。使用XML模塊進(jìn)行解釋。

e. 搜索文本

您可以找到某個(gè)文本字符串在頁面上的確切位置:

areas = page.search_for("mupdf")

這將提供一個(gè)矩形列表,每個(gè)矩形都包含一個(gè)字符串“mupdf”(不區(qū)分大小寫)。您可以使用此信息來突出顯示這些區(qū)域(僅限PDF)或創(chuàng)建文檔的交叉引用。

7. PDF操作

PDF是唯一可以使用PyMuPDF修改的文檔類型。其他文件類型是只讀的。

但是,您可以將任何文檔(包括圖像)轉(zhuǎn)換為PDF,然后將所有PyMuPDF功能應(yīng)用于轉(zhuǎn)換結(jié)果,Document.convert_to_pdf()。

Document.save()始終將PDF以其當(dāng)前(可能已修改)狀態(tài)存儲在磁盤上。

通常,您可以選擇是保存到新文件,還是僅將修改附加到現(xiàn)有文件(“增量保存”),這通常要快得多。

下面介紹如何操作PDF文檔。

a. 修改、創(chuàng)建、重新排列和刪除頁面

有幾種方法可以操作所謂頁面樹(描述所有頁面的結(jié)構(gòu)):

  • PDF:Document.delete_page()和Document.delete_pages()刪除頁面 - ?Document.copy_page()、Document.fullcopy_page()和Document.move_page()將頁面復(fù)制或移動到同一文檔中的其他位置。

  • Document.select()將PDF壓縮到選定頁面,參數(shù)是要保留的頁碼序列。這些整數(shù)都必須在0&lt;=i&lt;page_ count范圍內(nèi)。執(zhí)行時(shí),此列表中缺少的所有頁面都將被刪除。剩余的頁面將按順序出現(xiàn),次數(shù)相同(?。┱缒付ǖ哪菢?。因此,您可以輕松地使用創(chuàng)建新的PDF:

  • - 第一頁或最后10頁- 僅奇數(shù)頁或偶數(shù)頁(用于雙面打印)- 包含或不包含給定文本的頁- 顛倒頁面順序。保存的新文檔將包含仍然有效的鏈接、注釋和書簽(i.a.w.指向所選頁面或某些外部資源)。

Document.insert_page()和Document.new_page()插入新頁面。此外,頁面本身可以通過一系列方法進(jìn)行修改(例如頁面旋轉(zhuǎn)、注釋和鏈接維護(hù)、文本和圖像插入)。

b. 連接和拆分PDF文檔

方法Document.insert_pdf()在不同的pdf文檔之間復(fù)制頁面。下面是一個(gè)簡單的joiner示例(doc1和doc2在PDF中打開): ???

# append complete doc2 to the end of doc1
doc1.insert_pdf(doc2)

下面是一個(gè)拆分doc1的片段。它將創(chuàng)建第一頁和最后10頁的新文檔: ?????

doc2 = fitz.open() # new empty PDF
doc2.insert_pdf(doc1, to_page = 9) # first 10 pages
doc2.insert_pdf(doc1, from_page = len(doc1) - 10) # last 10 pages
doc2.save("first-and-last-10.pdf")

c. 保存

Document.save()將始終以當(dāng)前狀態(tài)保存文檔。

您可以通過指定選項(xiàng)incremental=True將更改寫回原始PDF。這個(gè)過程(通常)非???,因?yàn)楦臅郊拥皆嘉募粫耆貙懰?/p>

d. 關(guān)閉

在程序繼續(xù)運(yùn)行時(shí),通常需要“關(guān)閉”文檔以將底層文件的控制權(quán)交給操作系統(tǒng)。

這可以通過Document.close()方法實(shí)現(xiàn)。除了關(guān)閉基礎(chǔ)文件外,還將釋放與文檔關(guān)聯(lián)的緩沖區(qū)。文章來源地址http://www.zghlxwxcb.cn/news/detail-721857.html

?

到了這里,關(guān)于Python處理PDF——PyMuPDF的安裝與使用詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • PyMuPDF`庫實(shí)現(xiàn)PDF旋轉(zhuǎn)功能

    PyMuPDF`庫實(shí)現(xiàn)PDF旋轉(zhuǎn)功能

    本文介紹了一個(gè)簡單的Python應(yīng)用程序,用于將PDF文件轉(zhuǎn)換為旋轉(zhuǎn)90度的PDF文件。主要用于csdn網(wǎng)站中導(dǎo)出的博客pdf是橫向的,看起來不是很方便,才想到用python編制一個(gè)將pdf從橫向轉(zhuǎn)為縱向的功能。 該P(yáng)DF轉(zhuǎn)換工具具有以下功能: 選擇PDF文件:通過點(diǎn)擊“選擇文件”按鈕,用戶

    2024年02月12日
    瀏覽(14)
  • 工具分享 | PDF文檔解析工具PyMuPDF

    工具分享 | PDF文檔解析工具PyMuPDF

    1 需求描述 最近工作需要 從PDF文檔中按照章節(jié)解析出對應(yīng)的文本和圖片(后續(xù)可能還會有表格) ,經(jīng)過調(diào)研,找到了一個(gè)功能強(qiáng)大的解析工具M(jìn)uPDF,對應(yīng)的Python包是 PyMuPDF 。本篇博客記錄使用它來實(shí)現(xiàn)具體功能。 官方文檔:https://pymupdf.readthedocs.io/en/latest/index.html 2 利用書簽中標(biāo)

    2024年02月11日
    瀏覽(45)
  • Python:PDF文件處理(數(shù)據(jù)處理)

    工作中有對PDF文件進(jìn)行數(shù)據(jù)抽取,現(xiàn)在總結(jié)歸納一下相應(yīng)的方法,本文包括一下內(nèi)容: PDF文件分割、拼接; PDF文件抽取圖片,簡單的圖片識別; PDF文件抽取表格; PDF文件抽取文本; PDF文件轉(zhuǎn)docx文件; docx文件數(shù)據(jù)抽??; 目的:盡可能的將pdf中的數(shù)據(jù),抽取出來,尤其是文

    2024年02月09日
    瀏覽(31)
  • python 處理pdf加密文件

    近期有同事需要提取加密的pdf文件,截取其中的信息,并且重構(gòu)pdf文件。網(wǎng)上沒有搜到相關(guān)的pdf操作,于是咨詢了chatgpt,給出了pypdf2的使用案例。但是時(shí)間比較久遠(yuǎn)了,很多庫內(nèi)的調(diào)用接口都已經(jīng)更新了。 于是自行到官方的庫內(nèi)學(xué)習(xí)相關(guān)接口使用。整理的處理代碼如下: ?

    2024年02月03日
    瀏覽(17)
  • Python處理PDF:在PDF文檔中插入頁眉和頁腳

    Python處理PDF:在PDF文檔中插入頁眉和頁腳

    在處理篇幅較長、結(jié)構(gòu)復(fù)雜的PDF文檔時(shí),頁眉和頁腳的設(shè)計(jì)與插入就顯得尤為重要。它們不僅扮演著美化文檔、提升專業(yè)度的角色,更承擔(dān)了導(dǎo)航指引、信息標(biāo)注的重要功能。 頁眉通常用于展示文檔的標(biāo)題或章節(jié)名稱,有助于讀者在翻閱過程中迅速定位所處位置,對文檔的整

    2024年04月16日
    瀏覽(31)
  • python批量處理修改pdf內(nèi)容

    python批量處理修改pdf內(nèi)容

    ? 將PDF轉(zhuǎn)換為Word: 使用pdf2docx庫中的Converter類來進(jìn)行PDF轉(zhuǎn)換。 convert_pdf_to_docx 函數(shù)接受PDF文件路徑和輸出的Word文檔路徑作為參數(shù)。 通過調(diào)用Converter對象的 convert 方法將PDF轉(zhuǎn)換為Docx格式。 最后調(diào)用 close 方法關(guān)閉Converter對象并保存轉(zhuǎn)換后的文檔。 將Word轉(zhuǎn)換為Excel: 使用docx庫

    2024年01月25日
    瀏覽(20)
  • 第八篇【傳奇開心果系列】Python自動化辦公庫技術(shù)點(diǎn)案例示例:深度解讀使用Python庫清洗處理從PDF文件提取的文本

    第八篇【傳奇開心果系列】Python自動化辦公庫技術(shù)點(diǎn)案例示例:深度解讀使用Python庫清洗處理從PDF文件提取的文本

    在使用pyPDF4或任何其他Python的PDF解析庫提取PDF文件的文本后,進(jìn)行清洗處理是非常重要的。這是因?yàn)镻DF文件通常包含了各種格式化元素,如頁眉、頁腳、頁碼、圖表、圖片等,這些元素可能會干擾到你提取的文本內(nèi)容。清洗處理的目標(biāo)是去除這些干擾元素,僅提取出你真正需

    2024年03月22日
    瀏覽(26)
  • Python打開文件并進(jìn)行處理,txt、excel、pdf、word!

    Python打開文件并進(jìn)行處理,txt、excel、pdf、word!

    在辦公處理中,我們常常要打開一些文件,面臨大量的數(shù)據(jù)時(shí),傳統(tǒng)的人工方法耗時(shí)耗力。在python中,有一系列包裝好的庫,讓我們能夠很方便的操作各種類型的文件。當(dāng)然,python的內(nèi)置函數(shù)也能夠很好的打開一些文件。本文主要探討python打開各類文件的方式。本文介紹的主

    2023年04月08日
    瀏覽(85)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包