欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)將單張或多張圖片轉(zhuǎn)PDF

 更新時(shí)間:2025年11月08日 09:29:03   作者:SunnyDays1011  
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)將單張或多張圖片轉(zhuǎn)PDF,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

在整理資料或處理圖片時(shí),你有沒有遇到過這樣的困擾:手機(jī)拍的照片、掃描的文檔、各種格式的圖片零散地散落在電腦里,想要統(tǒng)一管理卻又不想一個(gè)個(gè)手動(dòng)插入 PDF?其實(shí),把這些圖片轉(zhuǎn)換成 PDF,不僅能讓資料更整齊,還方便分享和歸檔,而且可以保證圖片清晰不丟失。

這篇博客將分享如何使用 Python 將圖片轉(zhuǎn)換為PDF。從單張圖片轉(zhuǎn)換,到批量處理多張圖片,再到不同格式的支持和頁面布局的優(yōu)化,都可以用簡(jiǎn)單的幾行代碼完成。

準(zhǔn)備工作:安裝圖片轉(zhuǎn)PDF庫

要在 Python中將圖片轉(zhuǎn)換為PDF,需要選擇一個(gè)支持將圖片寫入到PDF的庫。本文所使用的庫是Spire.PDF for Python,它是一個(gè)PDF文檔處理庫,功能豐富,支持插入多種圖片格式,包括 PNG、JPEG、TIFF 和 SVG,還支持 PDF 頁面布局自定義、批量處理和合并圖片等操作。

你可以通過以下 pip 命令安裝它:

pip install Spire.PDF

安裝完成后,就可以在 Python 中直接調(diào)用該庫的類和方法了。

單張圖片轉(zhuǎn)換為 PDF

如果你只需要將一張圖片轉(zhuǎn)換為 PDF,可以按照以下步驟操作:

  • 創(chuàng)建 PdfDocument 對(duì)象。
  • 將頁面邊距設(shè)置為零。
  • 使用 PdfImage.FromFile() 載入圖片,并獲取圖片尺寸。
  • 添加一個(gè)與圖片大小相同的 PDF 頁面。
  • 將圖片繪制到頁面上。
  • 保存 PDF 文件。

下面是完整的 Python 代碼示例:

from spire.pdf.common import *
from spire.pdf import *

# 創(chuàng)建 PdfDocument 對(duì)象
pdf = PdfDocument()

# 設(shè)置頁面邊距為 0
pdf.PageSettings.SetMargins(0.0)

# 載入圖片
image = PdfImage.FromFile("Sample.jpg")

# 獲取圖片寬高
width = image.PhysicalDimension.Width
height = image.PhysicalDimension.Height

# 創(chuàng)建與圖片同大小的頁面
page = pdf.Pages.Add(SizeF(width, height))

# 繪制圖片
page.Canvas.DrawImage(image, 0.0, 0.0, width, height)

# 保存 PDF
pdf.SaveToFile("單圖.pdf")
pdf.Dispose()

運(yùn)行這段代碼后,你就能得到與圖片尺寸完全一致的 PDF 文件。

將文件夾中多張圖片批量轉(zhuǎn)換為 PDF

如果你有一個(gè)文件夾里存放了多張圖片,需要將它們統(tǒng)一轉(zhuǎn)換成一個(gè) PDF,可以采用批量處理方法:

  • 遍歷文件夾中的圖片。
  • 每張圖片都創(chuàng)建一個(gè)與其尺寸相同的 PDF 頁面。
  • 將圖片繪制在對(duì)應(yīng)頁面上。
  • 保存最終的 PDF 文件。

示例代碼如下:

from spire.pdf.common import *
from spire.pdf import *
import os

# 創(chuàng)建 PdfDocument 對(duì)象
doc = PdfDocument()
doc.PageSettings.SetMargins(0.0)

# 圖片所在文件夾
path = '圖片/'
files = os.listdir(path)

for root, dirs, files in os.walk(path):
    for file in files:
        # 載入圖片
        image = PdfImage.FromFile(os.path.join(root, file))
        width = image.PhysicalDimension.Width
        height = image.PhysicalDimension.Height
        
        # 添加頁面
        page = doc.Pages.Add(SizeF(width, height))
        
        # 繪制圖片
        page.Canvas.DrawImage(image, 0.0, 0.0, width, height)

# 保存 PDF
doc.SaveToFile('output/多圖.pdf')
doc.Dispose()

這樣,你就可以一次性將整個(gè)文件夾的圖片生成一個(gè) PDF,方便管理和分享。

調(diào)整 PDF 布局與圖片位置

在一些場(chǎng)景下,你可能希望 PDF 頁面大小統(tǒng)一,例如使用 A4 頁面,同時(shí)將圖片居中顯示。可以通過設(shè)置頁面大小、邊距以及計(jì)算圖片在頁面上的位置來實(shí)現(xiàn):

from spire.pdf.common import *
from spire.pdf import *

pdf = PdfDocument()
pdf.PageSettings.SetMargins(5.0)  # 設(shè)置邊距
pdf.PageSettings.Size = PdfPageSize.A4()  # 設(shè)置頁面為 A4

# 添加新頁面
page = pdf.Pages.Add()

# 載入圖片
image = PdfImage.FromFile("Sample.jpg")
width = image.PhysicalDimension.Width
height = image.PhysicalDimension.Height

# 計(jì)算居中位置
x = (page.GetClientSize().Width - width) / 2
y = (page.GetClientSize().Height - height) / 2

# 繪制圖片
page.Canvas.DrawImage(image, x, y, width, height)

pdf.SaveToFile("自定義.pdf")
pdf.Dispose()

通過這種方法,你可以保證生成的 PDF 頁面整齊、美觀,適合打印或正式展示。

其他圖片格式(如SVG、TIFF)轉(zhuǎn) PDF

除了將 PNG、JPEG、BMP等圖片格式轉(zhuǎn)換為 PDF 外,Spire.PDF還支持將SVG 轉(zhuǎn)換為PDF。

from spire.pdf.common import *
from spire.pdf import *

# 創(chuàng)建 PdfDocument 對(duì)象
document = PdfDocument()

# 加載 SVG 文件
document.LoadFromSvg("SVG.svg")

# 保存為 PDF 文件
document.SaveToFile("output/SVG.pdf", FileFormat.PDF)
document.Dispose()

如果有特殊需求,例如將 TIFF 轉(zhuǎn) PDF,你可以借助 Pillow 庫(pip install pillow)先將每一頁轉(zhuǎn)換為 PNG,再生成 PDF:

from spire.pdf.common import *
from spire.pdf import *
from PIL import Image
import os

# 創(chuàng)建PDF文檔并移除頁邊距
pdf = PdfDocument()
pdf.PageSettings.SetMargins(0.0)

# 加載TIFF圖片,將每一幀轉(zhuǎn)換為PNG并添加到PDF
tiff_image = Image.open("example.tiff")
for i in range(tiff_image.n_frames):
    tiff_image.seek(i)
    frame = tiff_image.copy()
    frame.save(f"temp_{i}.png")
    image = PdfImage.FromFile(f"temp_{i}.png")
    page = pdf.Pages.Add(SizeF(image.PhysicalDimension.Width, image.PhysicalDimension.Height))
    page.Canvas.DrawImage(image, 0.0, 0.0)

# 保存文檔
pdf.SaveToFile("output/TIFF轉(zhuǎn)PDF.pdf")
pdf.Dispose()

通過這種方法,每一幀 TIFF 都會(huì)生成 PDF 中的一頁,保證了圖像質(zhì)量和順序。

實(shí)用方法示例:按文件名順序生成 PDF

假設(shè)你有一個(gè)文件夾存放會(huì)議照片,文件名是按照時(shí)間順序命名的。我們可以按文件名順序,把所有圖片合并到一個(gè) PDF 中。

from spire.pdf import PdfDocument, PdfImage
from spire.pdf.common import SizeF
import os

# 創(chuàng)建 PDF
pdf = PdfDocument()
pdf.PageSettings.SetMargins(0.0)

# 圖片所在文件夾
folder_path = "MeetingPhotos/"
images = sorted(os.listdir(folder_path))  # 按文件名排序

for img_file in images:
    # 僅處理常見圖片格式
    if img_file.lower().endswith((".jpg", ".jpeg", ".png")):
        image_path = os.path.join(folder_path, img_file)
        img = PdfImage.FromFile(image_path)
        
        # 添加與圖片同尺寸頁面
        page = pdf.Pages.Add(SizeF(img.PhysicalDimension.Width, img.PhysicalDimension.Height))
        page.Canvas.DrawImage(img, 0.0, 0.0, img.PhysicalDimension.Width, img.PhysicalDimension.Height)

# 保存 PDF
pdf.SaveToFile("output/會(huì)議照片.pdf")
pdf.Dispose()

這樣,每張圖片就會(huì)生成一頁,順序嚴(yán)格按照文件名排列,非常適合會(huì)議照片或掃描文檔的整理。

高級(jí)操作:圖片縮放與排版

在實(shí)際應(yīng)用中,圖片大小可能不一,如果直接生成 PDF,可能出現(xiàn)頁面空白或圖片過大。可以通過縮放或調(diào)整位置,達(dá)到統(tǒng)一效果:

page_width, page_height = 595.0, 842.0  # A4 尺寸,單位為點(diǎn)

for img_file in images:
    img = PdfImage.FromFile(os.path.join(folder_path, img_file))

    scale = min(page_width / img.PhysicalDimension.Width, page_height / img.PhysicalDimension.Height)

    width = img.PhysicalDimension.Width * scale
    height = img.PhysicalDimension.Height * scale

    page = pdf.Pages.Add(SizeF(page_width, page_height))

    x = (page_width - width) / 2
    y = (page_height - height) / 2
    page.Canvas.DrawImage(img, x, y, width, height)

這樣生成的 PDF 頁面大小統(tǒng)一,圖片居中,排版更加美觀,適合打印或正式文檔歸檔。

為了讓 PDF 更專業(yè),你還可以自動(dòng)生成封面和目錄。比如:

  • 封面:可以先添加一頁 PDF,繪制標(biāo)題、日期和簡(jiǎn)單說明。
  • 目錄:掃描圖片文件名,生成每頁對(duì)應(yīng)的說明,放在封面后面。

這樣整理出的 PDF 就像一本正式的電子資料,不僅好看,也方便閱讀。

總結(jié)

使用 Python 將圖片整理成 PDF,不僅節(jié)省了手動(dòng)操作時(shí)間,還能讓資料更整齊、專業(yè)。無論是單張圖片、批量圖片,還是不同格式的圖像,都可以輕松處理。通過本文示例,你可以快速整理你的圖片資料,生成高質(zhì)量 PDF 文檔。

到此這篇關(guān)于Python實(shí)現(xiàn)將單張或多張圖片轉(zhuǎn)PDF的文章就介紹到這了,更多相關(guān)Python圖片轉(zhuǎn)PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python palywright庫基本使用

    python palywright庫基本使用

    這篇文章主要介紹了python palywright庫的基本使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • python進(jìn)階之協(xié)程你了解嗎

    python進(jìn)階之協(xié)程你了解嗎

    這篇文章主要為大家詳細(xì)介紹了python進(jìn)階之協(xié)程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python輕量級(jí)ORM框架Peewee訪問sqlite數(shù)據(jù)庫的方法詳解

    Python輕量級(jí)ORM框架Peewee訪問sqlite數(shù)據(jù)庫的方法詳解

    這篇文章主要介紹了Python輕量級(jí)ORM框架Peewee訪問sqlite數(shù)據(jù)庫的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了ORM框架的概念、功能及peewee的安裝、使用及操作sqlite數(shù)據(jù)庫的方法,需要的朋友可以參考下
    2017-07-07
  • python中列表list切分的實(shí)現(xiàn)

    python中列表list切分的實(shí)現(xiàn)

    列表是Python中最常用的數(shù)據(jù)結(jié)構(gòu)之一,經(jīng)常需要對(duì)列表進(jìn)行切分操作,本文主要介紹了python中列表list切分的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • Python3+Django get/post請(qǐng)求實(shí)現(xiàn)教程詳解

    Python3+Django get/post請(qǐng)求實(shí)現(xiàn)教程詳解

    這篇文章主要介紹了Python3+Django get/post請(qǐng)求實(shí)現(xiàn)教程詳解,需要的朋友可以參考下
    2021-02-02
  • python讀取文件夾中圖片的圖片名并寫入excel表格

    python讀取文件夾中圖片的圖片名并寫入excel表格

    這篇文章介紹了使用python讀取文件夾中圖片的圖片名并寫入excel表格的方法。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • 如何使用 Pylint 來規(guī)范 Python 代碼風(fēng)格(來自IBM)

    如何使用 Pylint 來規(guī)范 Python 代碼風(fēng)格(來自IBM)

    本文通過詳細(xì)的理論介紹和簡(jiǎn)單易懂的實(shí)例全面介紹了 Python 代碼分析工具 Pylint。相信讀者看完后一定可以輕松地將 Pylint 運(yùn)用到自己的開發(fā)工程中
    2018-04-04
  • 利用Python進(jìn)行音頻信號(hào)處理和音樂生成的代碼示例

    利用Python進(jìn)行音頻信號(hào)處理和音樂生成的代碼示例

    隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,音頻信號(hào)處理和音樂生成逐漸成為了Python程序員們的關(guān)注點(diǎn),本文將介紹如何利用Python進(jìn)行音頻信號(hào)處理和音樂生成,包括基本概念、常用庫的使用以及實(shí)際的代碼示例,需要的朋友可以參考下
    2024-06-06
  • Python wxauto 庫解鎖微信自動(dòng)化的無限可能(示例代碼)

    Python wxauto 庫解鎖微信自動(dòng)化的無限可能(示例代碼)

    wxauto庫是基于Python的一個(gè)自動(dòng)化工具,它主要用于操作和自動(dòng)化WxPython應(yīng)用程序,這篇文章主要介紹了Python wxauto 庫解鎖微信自動(dòng)化的無限可能,需要的朋友可以參考下
    2024-07-07
  • Python實(shí)現(xiàn)從訂閱源下載圖片的方法

    Python實(shí)現(xiàn)從訂閱源下載圖片的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)從訂閱源下載圖片的方法,涉及Python采集的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03

最新評(píng)論