pdf常用字体包 -baijiahao_PDF 的各种操作,我用 Python 来实现(附网站和操作指导)
導言
PDF 處理是日常工作中的常見需求,包括 PDF 合并、刪除、提取等。更復雜的任務如:將 PDF 轉換成 圖像。
下面通過幾個簡單的例子和一份代碼,幫助大家解決上面的需求,操作非常簡單。
在文末我會提供一份源碼和一個神奇的 PDF 處理網站幫你解決 PDF 處理的煩惱。
PyMuPDF 介紹
為什么使用 Python,那還不是 Python 有著強大的第三方工具包,我們想要的功能興許就有。
PyMuPDF 就是我們需要的工具,官方文檔對他的簡介是
PyMuPDF 是針對 MuPDF 的 Python 綁定,它是一個輕量級 PDF 和 XPS 查看器。MuPDF 可以訪問 PDF,XPS,OpenXPS,CBZ(漫畫書檔案),FB2 和 EPUB(電子書)格式的文件。這些是擴展名為.pdf,.xps,.oxps,.cbz,.fb2 或.epub 的文件(因此您可以使用 Python 開發電子書查看器)。
官方文檔:https://pymupdf.readthedocs.io/en/latest/intro.html
這里有個細節需要說明的是,Python 的第三方包一般是安裝的名稱和導入的名稱是一樣的,比如 numpy 的安裝和使用是
pip?install?numpy?#?numpy?包的安裝import?numpy??#?numpy?包的導入但是對于 PyMuPDF 這個包就不一樣了,安裝和使用的包名是不一樣的,這個是歷史遺留下來的原因,知道有這回事就行。
PyMuPDF 的安裝是這樣子的
pip?install?PyMuPDFPyPI 源:https://pypi.org/project/PyMuPDF/
PyMuPDF 的導入是這樣子的
import?fitzPDF 各種處理
拆分與提取
拆分與提取 PDF 文件的,使用的是 clean 命令,同時該命令也可以用于文檔加密,壓縮、刪除頁面等操作,基本說明如下:
python?-m?fitz?clean?-husage:?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?filenameoutput????????????????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?PERMISSION??????????????????????integer?with?permission?levels-sanitize?????????????sanitize?/?clean?contents-pretty???????????????prettify?PDF?structure-pages?PAGES??????????output?selected?pages,?format:?1,5-7,50-N以下命令只需在終端運行即可:
參數:2-N 代表去除第一頁
python?-m?fitz?clean?-sanitize?-pages?2-N?F:視覺工程師必須知道的工業相機50問.pdf?F:去除第一頁.pdf其他功能請自行嘗試
提取字體和圖像(非 PDF 頁面)
將字體或圖像從選定的 PDF 頁面提取到所需目錄,基本說明如下:
python?-m?fitz?extract?-husage:?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將 視覺工程師必須知道的工業相機50問.pdf 文件中的圖片和字體提取到 提取結果 文件夾中
python?-m?fitz?extract?-images?-fonts?-output?F:提取結果?F:視覺工程師必須知道的工業相機50問.pdfsaved?9?fonts?to?'F:提取結果'saved?6?images?to?'F:提取結果'合并多份文檔
合并多份 PDF 文檔,使用的是 join 命令,可以指定頁面進行合并,同時需要關注 PDF 是否需要密碼才能打開,基本說明如下:
python?-m?fitz?join?-husage:?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]]'以下命令只需在終端運行即可:合并兩份文檔的全部
python?-m?fitz?join?-output?"F:合并兩份文檔.pdf"?"F:視覺工程師必須知道的工業相機50問.pdf"?"F:Modern?CMake文檔.pdf"合并兩份文檔的部分,選擇 視覺工程師必須知道的工業相機50問 文件的第一頁和 Modern CMake文檔.pdf 的 5 到最后一頁進行合并,下面語句中有兩個 ,, 是因為要合并的文檔不需要密碼,如果需要密碼,就把兩個逗號替換成 密碼即可。
- 5-N 代表第五頁開始到文檔的末尾
PDF 轉換成圖片
這個功能沒辦法像上面那樣一個命令就能解決,不過通過查看文檔,我們也不難寫出代碼
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)?#?頁面旋轉角度????????#?每個尺寸的縮放系數為1.3,這將為我們生成分辨率提高2.6的圖像。????????#?此處若是不做設置,默認圖片大小為:792X612, dpi=96????????zoom_x?=?1.33333333?#(1.33333333-->1056x816)???(2-->1584x1224)????????zoom_y?=?1.33333333????????mat?=?fitz.Matrix(zoom_x,?zoom_y).preRotate(rotate)????????pix?=?page.getPixmap(matrix=mat,?alpha=False)????????if?not?os.path.exists(imagePath):#判斷存放圖片的文件夾是否存在????????????os.makedirs(imagePath)?#?若圖片文件夾不存在就創建????????pix.writePNG(imagePath+'/'+'images_%s.png'?%?pg)#將圖片寫入指定的文件夾內????endTime_pdf2img?=?datetime.datetime.now()#結束時間????print('pdf2img時間=',(endTime_pdf2img?-?startTime_pdf2img).seconds)if?__name__?==?"__main__":????pdfPath?=?'./視覺工程師必須知道的工業相機50問.pdf'????imagePath?=?'./提取結果'????pyMuPDF_fitz(pdfPath,?imagePath)旋轉 10 度的結果
神奇的網站明天再放出,哈哈哈~~~
以上就是 PDF 處理的幾個常用功能,希望能夠幫到你,喜歡的朋友感謝三連~~~
參考:
- https://pymupdf.readthedocs.io/en/latest/index.html
- https://www.jianshu.com/p/f57cc64b9f5e
總結
以上是生活随笔為你收集整理的pdf常用字体包 -baijiahao_PDF 的各种操作,我用 Python 来实现(附网站和操作指导)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openresty完全开发指南_送给你,
- 下一篇: python编辑器_初学Python这几