基于Python輕松實(shí)現(xiàn)PDF轉(zhuǎn)圖片
導(dǎo)語(yǔ)
PDF文件是我們?cè)谌粘9ぷ骱蛯W(xué)習(xí)中常用的文檔格式之一,但你知道嗎?你可以將PDF文件轉(zhuǎn)換為圖像,讓文檔變得更加生動(dòng)有趣。或者是防止別人對(duì)你文檔的復(fù)制粘貼。
本篇博客將為你詳細(xì)介紹如何將PDF轉(zhuǎn)換為圖像,開(kāi)啟全新的文檔閱讀體驗(yàn)。
什么是PDF轉(zhuǎn)圖像
PDF轉(zhuǎn)圖像是一種將PDF文件的每一頁(yè)內(nèi)容轉(zhuǎn)換為圖像格式(如PNG、JPEG等)的處理方式。通過(guò)這種方式,你可以將靜態(tài)的文檔內(nèi)容轉(zhuǎn)化為生動(dòng)的圖像,防止別人對(duì)文字文檔的復(fù)制粘貼,更易于與他人分享和呈現(xiàn)。
如何實(shí)現(xiàn)pdf轉(zhuǎn)圖像
使用pdf2image庫(kù)
使用Python的pdf2image庫(kù),我們可以輕松實(shí)現(xiàn)PDF到圖像的轉(zhuǎn)換。
但需要注意的是:pdf2image
基于poppler-utils
工具,它使用pdftoppm
工具將PDF頁(yè)面轉(zhuǎn)換為圖像。因此,在使用pdf2image
之前,你需要確保已經(jīng)安裝了poppler-utils
。
from pdf2image import convert_from_path def pdf_to_images(pdf_path, output_folder): pages = convert_from_path(pdf_path) for i, page in enumerate(pages): page.save(f'{output_folder}/page_{i + 1}.png', 'PNG') pdf_path = 'your_pdf_file.pdf' output_folder = 'output_images' pdf_to_images(pdf_path, output_folder)
使用PyMuPDF庫(kù)進(jìn)行PDF轉(zhuǎn)圖像
另一個(gè)強(qiáng)大的工具是PyMuPDF庫(kù),它允許我們更加靈活地操作PDF并轉(zhuǎn)換為圖像。
具體版如下:
import datetime import os import fitz # fitz就是pip install PyMuPDF def pyMuPDF_fitz(pdfPath, imagePath): startTime_pdf2img = datetime.datetime.now() # 開(kāi)始時(shí)間 print("imagePath=" + imagePath) pdfDoc = fitz.open(pdfPath) for pg in range(pdfDoc.pageCount): page = pdfDoc[pg] rotate = int(0) # 每個(gè)尺寸的縮放系數(shù)為1.3,這將為我們生成分辨率提高2.6的圖像。 # 此處若是不做設(shè)置,默認(rèn)圖片大小為:792X612, dpi=96 zoom_x = 2 # (1.33333333-->1056x816) (2-->1584x1224) zoom_y = 2 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) # 若圖片文件夾不存在就創(chuàng)建 pix.writePNG(imagePath + '/' + 'images_%s.png' % pg) # 將圖片寫(xiě)入指定的文件夾內(nèi) endTime_pdf2img = datetime.datetime.now() # 結(jié)束時(shí)間 print('pdf2img時(shí)間=', (endTime_pdf2img - startTime_pdf2img).seconds) if __name__ == "__main__": # 1、PDF地址 pdfPath = r'../demo-scan.pdf' # 2、需要儲(chǔ)存圖片的目錄 imagePath = './imgs' pyMuPDF_fitz(pdfPath, imagePath)
簡(jiǎn)化版如下:
import fitz def pdf_to_images(pdf_path, output_folder): pdf_document = fitz.open(pdf_path) for pg in range(pdf_document.page_count): page = pdf_document[pg] pix = page.get_pixmap(matrix=fitz.Matrix(2, 2)) pix.save(f'{output_folder}/page_{pg + 1}.png') pdf_path = 'your_pdf_file.pdf' output_folder = 'output_images' pdf_to_images(pdf_path, output_folder)
開(kāi)啟全新閱讀體驗(yàn)
通過(guò)將PDF轉(zhuǎn)換為圖像,你可以在不同場(chǎng)景下獲得更好的閱讀體驗(yàn)。你可以將圖像用于演示、分享到社交媒體,甚至用于個(gè)人學(xué)習(xí)筆記。
也可以防止別人直接復(fù)制你的成果。
兩種方式對(duì)比
pdf2image
和 fitz
(來(lái)自PyMuPDF庫(kù))都是用于在Python中處理PDF文件的工具。它們?cè)诠δ芎陀梅ㄉ嫌幸恍﹨^(qū)別,以下是它們的主要區(qū)別和比較:
pdf2image:
功能特點(diǎn):
pdf2image
是一個(gè)用于將PDF文件的頁(yè)面轉(zhuǎn)換為圖像的Python庫(kù)。它專(zhuān)注于將PDF頁(yè)面轉(zhuǎn)換為圖像格式(如PNG、JPEG等),便于在其他應(yīng)用中使用,如圖像處理、OCR等。
依賴(lài)庫(kù):
pdf2image
基于poppler-utils
工具,它使用pdftoppm
工具將PDF頁(yè)面轉(zhuǎn)換為圖像。因此,在使用pdf2image
之前,你需要確保已經(jīng)安裝了poppler-utils
。
使用簡(jiǎn)單:
pdf2image
提供了直觀的API,易于使用。它可以從PDF文件中提取指定頁(yè)面并將其轉(zhuǎn)換為圖像,非常適合基本的PDF轉(zhuǎn)圖像需求。
示例代碼:
from pdf2image import convert_from_path images = convert_from_path('input.pdf') for i, image in enumerate(images): image.save(f'page_{i + 1}.png', 'PNG')
fitz(PyMuPDF庫(kù)):
功能特點(diǎn):
fitz
是 PyMuPDF
庫(kù)的一部分,它是一個(gè)功能豐富的PDF處理庫(kù),支持閱讀、編輯和轉(zhuǎn)換PDF文檔。除了轉(zhuǎn)換為圖像,fitz
還提供了許多其他PDF操作的功能,如文本提取、標(biāo)注等。
獨(dú)立性:
fitz
是 PyMuPDF
庫(kù)的一部分,它不需要依賴(lài)外部工具。這使得在沒(méi)有安裝poppler-utils
的情況下,仍然可以使用 fitz
進(jìn)行PDF操作。
更多靈活性:
fitz
不僅可以將PDF頁(yè)面轉(zhuǎn)換為圖像,還可以對(duì)PDF文檔進(jìn)行更復(fù)雜的操作,如獲取頁(yè)面信息、文本提取、頁(yè)面合并、旋轉(zhuǎn)、裁剪等。因此,如果你需要更多關(guān)于PDF的操作,fitz
是一個(gè)更強(qiáng)大的選擇。
示例代碼:
import fitz pdf_document = fitz.open('input.pdf') page = pdf_document[0] pix = page.get_pixmap(matrix=fitz.Matrix(2, 2)) pix.save('page_1.png') pdf_document.close()
綜上所述,如果你只需要將PDF頁(yè)面轉(zhuǎn)換為圖像,pdf2image
是一個(gè)更簡(jiǎn)單的選擇。而如果你需要更多PDF操作的靈活性,如文本提取、標(biāo)注等,那么fitz
(PyMuPDF)提供了更廣泛的功能。選擇合適的工具取決于你的具體需求。
到此這篇關(guān)于基于Python輕松實(shí)現(xiàn)PDF轉(zhuǎn)圖片的文章就介紹到這了,更多相關(guān)Python PDF轉(zhuǎn)圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用python按照?qǐng)D像灰度值統(tǒng)計(jì)并篩選圖片的操作(PIL,shutil,os)
這篇文章主要介紹了用python按照?qǐng)D像灰度值統(tǒng)計(jì)并篩選圖片的操作(PIL,shutil,os),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06Python語(yǔ)法學(xué)習(xí)之進(jìn)程的創(chuàng)建與常用方法詳解
本文我們將學(xué)習(xí)一下在?Python?中去創(chuàng)建并使用多進(jìn)程的方法,可以通過(guò)創(chuàng)建多個(gè)進(jìn)程來(lái)幫助我們提高腳本執(zhí)行的效率,感興趣的可以了解一下2022-04-04Python實(shí)現(xiàn)滑動(dòng)平均(Moving Average)的例子
今天小編就為大家分享一篇Python實(shí)現(xiàn)滑動(dòng)平均(Moving Average)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08簡(jiǎn)單了解Django ORM常用字段類(lèi)型及參數(shù)配置
這篇文章主要介紹了簡(jiǎn)單了解Django ORM常用字段類(lèi)型及參數(shù)配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01Python Word文件自動(dòng)化實(shí)戰(zhàn)之簡(jiǎn)歷篩選
本文將利用Python自動(dòng)化做一個(gè)具有實(shí)操性的小練習(xí),即通過(guò)讀取簡(jiǎn)歷來(lái)篩選出符合招聘條件的簡(jiǎn)歷。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-05-05Python實(shí)現(xiàn)簡(jiǎn)單狀態(tài)框架的方法
這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)單狀態(tài)框架的方法,涉及Python狀態(tài)框架的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03Python異常處理知識(shí)點(diǎn)總結(jié)
在本篇文章中小編給大家分享了關(guān)于Python異常處理的相關(guān)知識(shí)點(diǎn)以及對(duì)應(yīng)的實(shí)例內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-02-02