日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

【Python】用 Python 来实现PDF 的各种操作(附网站和操作指导)

發(fā)布時間:2025/3/8 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】用 Python 来实现PDF 的各种操作(附网站和操作指导) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

導(dǎo)言

PDF 處理是日常工作中的常見需求,包括 PDF 合并、刪除、提取等。更復(fù)雜的任務(wù)如:將 PDF 轉(zhuǎn)換成 圖像。

下面通過幾個簡單的例子和一份代碼,幫助大家解決上面的需求,操作非常簡單。

在文末我會提供一份源碼和一個神奇的 PDF 處理網(wǎng)站幫你解決 PDF 處理的煩惱。

PyMuPDF 介紹

為什么使用 Python,那還不是 Python 有著強(qiáng)大的第三方工具包,我們想要的功能興許就有。

PyMuPDF 就是我們需要的工具,官方文檔對他的簡介是

PyMuPDF 是針對 MuPDF 的 Python 綁定,它是一個輕量級 PDF 和 XPS 查看器。MuPDF 可以訪問 PDF,XPS,OpenXPS,CBZ(漫畫書檔案),FB2 和 EPUB(電子書)格式的文件。這些是擴(kuò)展名為.pdf,.xps,.oxps,.cbz,.fb2 或.epub 的文件(因此您可以使用 Python 開發(fā)電子書查看器)。

官方文檔:https://pymupdf.readthedocs.io/en/latest/intro.html

這里有個細(xì)節(jié)需要說明的是,Python 的第三方包一般是安裝的名稱和導(dǎo)入的名稱是一樣的,比如 numpy 的安裝和使用是

pip?install?numpy?#?numpy?包的安裝import?numpy??#?numpy?包的導(dǎo)入

但是對于 PyMuPDF ?這個包就不一樣了,安裝和使用的包名是不一樣的,這個是歷史遺留下來的原因,知道有這回事就行。

PyMuPDF ?的安裝是這樣子的

pip?install?PyMuPDF

PyPI 源:https://pypi.org/project/PyMuPDF/

PyMuPDF ?的導(dǎo)入是這樣子的

import?fitz

PDF 各種處理

拆分與提取

拆分與提取 PDF 文件的,使用的是 clean 命令,同時該命令也可以用于文檔加密,壓縮、刪除頁面等操作,基本說明如下:

python?-m?fitz?clean?-h usage:?fitz?clean?[-h]?[-password?PASSWORD][-encryption?{keep,none,rc4-40,rc4-128,aes-128,aes-256}][-owner?OWNER]?[-user?USER]?[-garbage?{0,1,2,3,4}][-compress]?[-ascii]?[-linear]?[-permission?PERMISSION][-sanitize]?[-pretty]?[-pages?PAGES]input?output--------------?optimize?PDF?or?create?sub-PDF?if?pages?given?--------------positional?arguments: input?????????????????PDF?filename output????????????????output?PDF?filenameoptional?arguments: -h,?--help????????????show?this?help?message?and?exit -password?PASSWORD????password -encryption?{keep,none,rc4-40,rc4-128,aes-128,aes-256}encryption?method -owner?OWNER??????????owner?password -user?USER????????????user?password -garbage?{0,1,2,3,4}??garbage?collection?level -compress?????????????compress?(deflate)?output -ascii????????????????ASCII?encode?binary?data -linear???????????????format?for?fast?web?display -permission?PERMISSIONinteger?with?permission?levels -sanitize?????????????sanitize?/?clean?contents -pretty???????????????prettify?PDF?structure -pages?PAGES??????????output?selected?pages,?format:?1,5-7,50-N

以下命令只需在終端運(yùn)行即可:

參數(shù):2-N 代表去除第一頁

python?-m?fitz?clean?-sanitize?-pages?2-N?F:\視覺工程師必須知道的工業(yè)相機(jī)50問.pdf?F:\去除第一頁.pdf

其他功能請自行嘗試

提取字體和圖像(非 PDF 頁面)

將字體或圖像從選定的 PDF 頁面提取到所需目錄,基本說明如下:

python?-m?fitz?extract?-h usage:?fitz?extract?[-h]?[-images]?[-fonts]?[-output?OUTPUT]?[-password?PASSWORD][-pages?PAGES]input---------------------?extract?images?and?fonts?to?disk?--------------------positional?arguments: input?????????????????PDF?filenameoptional?arguments: -h,?--help????????????show?this?help?message?and?exit -images???????????????extract?images -fonts????????????????extract?fonts -output?OUTPUT????????output?directory,?defaults?to?current -password?PASSWORD????password -pages?PAGES??????????only?consider?these?pages,?format:?1,5-7,50-N

將 視覺工程師必須知道的工業(yè)相機(jī)50問.pdf 文件中的圖片和字體提取到 提取結(jié)果 文件夾中

python?-m?fitz?extract?-images?-fonts?-output?F:\提取結(jié)果?F:\視覺工程師必須知道的工業(yè)相機(jī)50問.pdf saved?9?fonts?to?'F:\提取結(jié)果' saved?6?images?to?'F:\提取結(jié)果'

合并多份文檔

合并多份 PDF 文檔,使用的是 join 命令,可以指定頁面進(jìn)行合并,同時需要關(guān)注 PDF 是否需要密碼才能打開,基本說明如下:

python?-m?fitz?join?-h usage:?fitz?join?[-h]?-output?OUTPUT?[input?[input?...]]----------------------------?join?PDF?documents?---------------------------positional?arguments: input???????????input?filenamesoptional?arguments: -h,?--help??????show?this?help?message?and?exit -output?OUTPUT??output?filenamespecify?each?input?as?'filename[,password[,pages]]'

以下命令只需在終端運(yùn)行即可:合并兩份文檔的全部

python?-m?fitz?join?-output?"F:\合并兩份文檔.pdf"?"F:\視覺工程師必須知道的工業(yè)相機(jī)50問.pdf"?"F:\Modern?CMake文檔.pdf"

合并兩份文檔的部分,選擇 視覺工程師必須知道的工業(yè)相機(jī)50問 文件的第一頁和 ?Modern CMake文檔.pdf 的 5 到最后一頁進(jìn)行合并,下面語句中有兩個 ,, 是因?yàn)橐喜⒌奈臋n不需要密碼,如果需要密碼,就把兩個逗號替換成 密碼即可。

  • 5-N 代表第五頁開始到文檔的末尾

python?-m?fitz?join?-output?F:\合并兩份文檔.pdf?F:\視覺工程師必須知道的工業(yè)相機(jī)50問.pdf,,1?"F:\Modern?CMake文檔.pdf",,5-N

PDF 轉(zhuǎn)換成圖片

這個功能沒辦法像上面那樣一個命令就能解決,不過通過查看文檔,我們也不難寫出代碼

import?sys,?fitz,?os,?datetimedef?pyMuPDF_fitz(pdfPath,?imagePath):startTime_pdf2img?=?datetime.datetime.now()#開始時間print("imagePath="+imagePath)pdfDoc?=?fitz.open(pdfPath)?#?打開文件for?pg?in?range(pdfDoc.pageCount):?#?遍歷所有頁面page?=?pdfDoc[pg]rotate?=?int(0)?#?頁面旋轉(zhuǎn)角度#?每個尺寸的縮放系數(shù)為1.3,這將為我們生成分辨率提高2.6的圖像。#?此處若是不做設(shè)置,默認(rèn)圖片大小為:792X612, dpi=96zoom_x?=?1.33333333?#(1.33333333-->1056x816)???(2-->1584x1224)zoom_y?=?1.33333333mat?=?fitz.Matrix(zoom_x,?zoom_y).preRotate(rotate)pix?=?page.getPixmap(matrix=mat,?alpha=False)if?not?os.path.exists(imagePath):#判斷存放圖片的文件夾是否存在os.makedirs(imagePath)?#?若圖片文件夾不存在就創(chuàng)建pix.writePNG(imagePath+'/'+'images_%s.png'?%?pg)#將圖片寫入指定的文件夾內(nèi)endTime_pdf2img?=?datetime.datetime.now()#結(jié)束時間print('pdf2img時間=',(endTime_pdf2img?-?startTime_pdf2img).seconds)if?__name__?==?"__main__":pdfPath?=?'./視覺工程師必須知道的工業(yè)相機(jī)50問.pdf'imagePath?=?'./提取結(jié)果'pyMuPDF_fitz(pdfPath,?imagePath)

旋轉(zhuǎn) 10 度的結(jié)果

神奇的網(wǎng)站明天再放出,哈哈哈~~~

以上就是 PDF 處理的幾個常用功能,希望能夠幫到你,喜歡的朋友感謝三連~~~

參考:

  • https://pymupdf.readthedocs.io/en/latest/index.html

  • https://www.jianshu.com/p/f57cc64b9f5e

往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯獲取一折本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開:https://t.zsxq.com/yFQV7am本站qq群1003271085。加入微信群請掃碼進(jìn)群:

總結(jié)

以上是生活随笔為你收集整理的【Python】用 Python 来实现PDF 的各种操作(附网站和操作指导)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。