Python輕松實(shí)現(xiàn)將圖片轉(zhuǎn)換為PDF并合并
在日常辦公或文檔處理中,我們經(jīng)常需要將多張圖片合并成一個(gè) PDF 文件。無(wú)論是掃描件整理、電子書(shū)制作,還是資料歸檔,將圖片轉(zhuǎn)換為 PDF 都是一項(xiàng)非常實(shí)用的需求。本文將介紹如何使用 Python 和 Spire.PDF for Python 庫(kù),輕松實(shí)現(xiàn)圖片到 PDF 的轉(zhuǎn)換與合并功能。
為什么選擇 Spire.PDF for Python?
Spire.PDF for Python 是一個(gè)功能強(qiáng)大的 PDF 操作庫(kù),它不僅支持創(chuàng)建、讀取和編輯 PDF 文檔,還提供了豐富的圖像處理功能。相比于其他庫(kù),Spire.PDF 的 API 設(shè)計(jì)簡(jiǎn)潔直觀,能夠輕松完成圖片到 PDF 的轉(zhuǎn)換,并允許我們精確控制頁(yè)面尺寸和圖片布局。
完整代碼實(shí)現(xiàn)
以下代碼展示了如何將指定文件夾中的所有 JPG/JPEG 圖片合并為一個(gè) PDF 文件:
from spire.pdf import *
import os
# 包含圖片的文件夾路徑
image_folder = r"C:\Users\Administrator\Desktop\Images"
# 輸出 PDF 文件路徑
output_file = "output/CombinedImages.pdf"
# 確保輸出目錄存在
os.makedirs(os.path.dirname(output_file), exist_ok=True)
# 創(chuàng)建 PDF 文檔對(duì)象
doc = PdfDocument()
# 移除頁(yè)面邊距,讓圖片鋪滿整頁(yè)
doc.PageSettings.SetMargins(0.0)
# 獲取所有 JPG/JPEG 文件并排序
image_files = sorted([
f for f in os.listdir(image_folder)
if f.lower().endswith((".jpg", ".jpeg"))
])
# 將每張圖片添加到 PDF 中
for image_name in image_files:
image_path = os.path.join(image_folder, image_name)
# 加載圖片
image = PdfImage.FromFile(image_path)
# 獲取圖片尺寸
width = image.PhysicalDimension.Width
height = image.PhysicalDimension.Height
# 創(chuàng)建與圖片尺寸相同的頁(yè)面
page = doc.Pages.Add(SizeF(width, height))
# 在頁(yè)面上繪制圖片
page.Canvas.DrawImage(image, 0.0, 0.0, width, height)
# 保存合并后的 PDF 文件
doc.SaveToFile(output_file)
doc.Dispose()
代碼解析
- 導(dǎo)入庫(kù)和設(shè)置路徑 :首先導(dǎo)入 Spire.PDF 和 os 模塊,定義圖片文件夾路徑和輸出文件路徑。
- 創(chuàng)建 PDF 文檔 :通過(guò)
PdfDocument()創(chuàng)建空白 PDF 文檔,并使用SetMargins(0)移除頁(yè)面邊距,確保圖片能夠完整鋪滿頁(yè)面。 - 讀取圖片文件 :使用
os.listdir()獲取文件夾中所有圖片文件,通過(guò)endswith()篩選 JPG 和 JPEG 格式,并用sorted()進(jìn)行排序,保證圖片按文件名順序合并。 - 逐張?zhí)砑訄D片 :對(duì)于每張圖片,使用
PdfImage.FromFile()加載,獲取其原始尺寸,然后創(chuàng)建相同尺寸的 PDF 頁(yè)面,最后通過(guò)DrawImage()將圖片繪制到頁(yè)面中。 - 保存和釋放資源 :使用
SaveToFile()保存 PDF 文件,并調(diào)用Dispose()釋放文檔資源。
運(yùn)行效果
執(zhí)行上述代碼后,程序會(huì)自動(dòng)在 output 文件夾下生成 CombinedImages.pdf 文件。該 PDF 中的每一頁(yè)對(duì)應(yīng)一張?jiān)紙D片,頁(yè)面大小與圖片尺寸完全一致,保證了圖片的最佳顯示效果。

擴(kuò)展應(yīng)用
基于上述代碼,我們可以輕松擴(kuò)展更多功能:
- 支持更多圖片格式 :在篩選條件中添加
.png、.bmp等格式 - 自定義頁(yè)面大小 :可以統(tǒng)一設(shè)置固定頁(yè)面尺寸,而非跟隨圖片尺寸
- 添加圖片壓縮 :通過(guò)調(diào)整圖片質(zhì)量來(lái)控制 PDF 文件大小
- 批量處理 :對(duì)多個(gè)文件夾分別生成對(duì)應(yīng)的 PDF 文件
總結(jié)
使用 Spire.PDF for Python 實(shí)現(xiàn)圖片轉(zhuǎn) PDF 功能,代碼簡(jiǎn)潔、易于理解,且無(wú)需安裝額外依賴。無(wú)論是個(gè)人用戶還是企業(yè)級(jí)應(yīng)用,都可以快速集成這一功能。希望本文能幫助你在文檔處理工作中提升效率,讓圖片管理和分享變得更加便捷。
到此這篇關(guān)于Python輕松實(shí)現(xiàn)將圖片轉(zhuǎn)換為PDF并合并的文章就介紹到這了,更多相關(guān)Python圖片轉(zhuǎn)PDF并合并內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python批量實(shí)現(xiàn)PDF轉(zhuǎn)換為圖片(JPG/PNG)
- 使用Python實(shí)現(xiàn)將圖片(JPG/PNG)轉(zhuǎn)換為PDF
- Python實(shí)現(xiàn)將PDF文檔轉(zhuǎn)換為圖片的示例代碼
- Python使用pdf2image實(shí)現(xiàn)PDF轉(zhuǎn)圖片的完整指南
- 利用Python實(shí)現(xiàn)文檔格式互轉(zhuǎn)的操作大全(PDF、Word、圖片、Markdown)
- Python實(shí)現(xiàn)將單張或多張圖片轉(zhuǎn)PDF
- 使用Python將圖片轉(zhuǎn)換為PDF格式的三種常見(jiàn)方法
相關(guān)文章
python3+PyQt5圖形項(xiàng)的自定義和交互 python3實(shí)現(xiàn)page Designer應(yīng)用程序
這篇文章主要為大家詳細(xì)介紹了python3+PyQt5圖形項(xiàng)的自定義和交互,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
PyCharm 創(chuàng)建指定版本的 Django(超詳圖解教程)
這篇文章主要介紹了PyCharm 創(chuàng)建指定版本的 Django,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
Python編程中*args與**kwargs區(qū)別作用詳解
這篇文章主要介紹了Python編程中*args與**kwargs區(qū)別作用詳解2021-10-10
python flask開(kāi)發(fā)的簡(jiǎn)單基金查詢工具
基于python flask開(kāi)發(fā)的簡(jiǎn)單基金查詢工具,支持大盤指數(shù)實(shí)時(shí)情況查看,總持倉(cāng)實(shí)際漲幅、預(yù)估漲幅等功能,感興趣的朋友可以下載該項(xiàng)目來(lái)查看使用2021-06-06
Python wxPython庫(kù)使用wx.ListBox創(chuàng)建列表框示例
這篇文章主要介紹了Python wxPython庫(kù)使用wx.ListBox創(chuàng)建列表框,結(jié)合實(shí)例形式分析了wxPython庫(kù)使用wx.ListBox創(chuàng)建列表框的簡(jiǎn)單實(shí)現(xiàn)方法及ListBox函數(shù)相關(guān)選項(xiàng)的功能,需要的朋友可以參考下2018-09-09
Python腳本實(shí)現(xiàn)批量修改交換機(jī)
本文介紹了一個(gè)基于Python和Netmiko庫(kù)的多廠商交換機(jī)批量配置腳本,該腳本主要功能包括支持華三、華為、思科、銳捷、中興等主流品牌交換機(jī)配置,感興趣的小伙伴可以了解下2026-05-05
Python發(fā)送http請(qǐng)求解析返回json的實(shí)例
下面小編就為大家分享一篇Python發(fā)送http請(qǐng)求解析返回json的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
Python縮進(jìn)問(wèn)題IndentationError的原因分析和解決方法
Python通過(guò)縮進(jìn)(空格或制表符)定義代碼層級(jí)關(guān)系,這種設(shè)計(jì)雖提升了代碼可讀性,但也導(dǎo)致IndentationError成為新手高頻錯(cuò)誤類型,本文將深度剖析縮進(jìn)錯(cuò)誤的根源,需要的朋友可以參考下2025-12-12
wxpython實(shí)現(xiàn)按鈕切換界面的方法
這篇文章主要為大家詳細(xì)介紹了wxpython實(shí)現(xiàn)按鈕切換界面的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11

