最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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下利用OpenCV來旋轉(zhuǎn)圖像的教程

    在Python下利用OpenCV來旋轉(zhuǎn)圖像的教程

    這篇文章主要介紹了在Python下利用OpenCV來旋轉(zhuǎn)圖像的教程,代碼和核心的算法都非常簡(jiǎn)單,需要的朋友可以參考下
    2015-04-04
  • Python使用lambda表達(dá)式對(duì)字典排序操作示例

    Python使用lambda表達(dá)式對(duì)字典排序操作示例

    這篇文章主要介紹了Python使用lambda表達(dá)式對(duì)字典排序操作,結(jié)合實(shí)例形式分析了lambda表達(dá)式實(shí)現(xiàn)字典按鍵排序、按值排序、多條件排序相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • pygame實(shí)現(xiàn)貪吃蛇小游戲

    pygame實(shí)現(xiàn)貪吃蛇小游戲

    這篇文章主要為大家詳細(xì)介紹了pygame實(shí)現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 如何將Python代碼轉(zhuǎn)化為可執(zhí)行的程序

    如何將Python代碼轉(zhuǎn)化為可執(zhí)行的程序

    在Python中,將代碼轉(zhuǎn)成可以執(zhí)行的程序需要安裝庫pyinstaller,如果是Windows用戶,打開Anaconda?Prompt輸入相對(duì)應(yīng)代碼,下面小編給大家詳細(xì)講解如何將Python代碼轉(zhuǎn)化為可執(zhí)行的程序,感興趣的朋友一起看看吧
    2024-03-03
  • Python中的startswith和endswith函數(shù)使用實(shí)例

    Python中的startswith和endswith函數(shù)使用實(shí)例

    這篇文章主要介紹了Python中的startswith和endswith函數(shù)使用實(shí)例,特別是endswith函數(shù),有了它,判斷文件的擴(kuò)展名、文件的類型在容易不過了,需要的朋友可以參考下
    2014-08-08
  • Python實(shí)現(xiàn)多格式文件預(yù)覽工具

    Python實(shí)現(xiàn)多格式文件預(yù)覽工具

    這篇文章主要介紹了如何基于?wxPython?的多格式文件瀏覽與預(yù)覽工具,支持文件夾選擇,最近一天文件篩選,圖文文檔預(yù)覽,文件復(fù)制等多項(xiàng)實(shí)用功能,感興趣的可以了解下
    2025-05-05
  • Python?lambda函數(shù)保姆級(jí)使用教程

    Python?lambda函數(shù)保姆級(jí)使用教程

    本文和你一起探索Python中的lambda函數(shù),讓你以最短的時(shí)間明白這個(gè)函數(shù)的原理。也可以利用碎片化的時(shí)間鞏固這個(gè)函數(shù),讓你在處理工作過程中更高效
    2022-06-06
  • Python實(shí)現(xiàn)設(shè)置PDF文檔的標(biāo)準(zhǔn)和自定義屬性

    Python實(shí)現(xiàn)設(shè)置PDF文檔的標(biāo)準(zhǔn)和自定義屬性

    在處理 PDF 文件時(shí),除了關(guān)注文件內(nèi)容本身,文檔的屬性信息同樣不可忽視,本文將介紹如何使用 Python 設(shè)置 PDF 文檔的標(biāo)準(zhǔn)和自定義屬性,感興趣的小伙伴可以了解下
    2026-03-03
  • 從原理詳解Python進(jìn)行Base64解碼的實(shí)戰(zhàn)技巧

    從原理詳解Python進(jìn)行Base64解碼的實(shí)戰(zhàn)技巧

    Base64編碼解碼是處理二進(jìn)制數(shù)據(jù)的常見需求,無論是處理API響應(yīng),還是數(shù)據(jù)存儲(chǔ),今天我們從實(shí)際應(yīng)用角度出發(fā),深入探討B(tài)ase64解碼的技術(shù)細(xì)節(jié),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-08-08
  • python線程池的實(shí)現(xiàn)實(shí)例

    python線程池的實(shí)現(xiàn)實(shí)例

    這篇文章主要介紹了python線程池的實(shí)現(xiàn)方法,代碼簡(jiǎn)單實(shí)用,供大家參考使用
    2013-11-11

最新評(píng)論

鹰潭市| 浦城县| 县级市| 惠安县| 深泽县| 思茅市| 黄龙县| 海淀区| 秀山| 清河县| 新晃| 泽库县| 新巴尔虎左旗| 莱芜市| 江门市| 武夷山市| 蓬安县| 罗田县| 隆回县| 许昌市| 南康市| 蓝田县| 吉木乃县| 故城县| 长宁县| 兰溪市| 拉孜县| 宝应县| 平塘县| 沙河市| 郯城县| 石棉县| 邮箱| 海安县| 米易县| 泰来县| 临高县| 达尔| 商城县| 措美县| 鹿泉市|