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

使用Python實現(xiàn)將圖片(JPG/PNG)轉(zhuǎn)換為PDF

 更新時間:2026年03月13日 08:19:57   作者:LSTM97  
在數(shù)字化時代,圖像與文檔的轉(zhuǎn)換與管理變得越來越重要,本文將介紹如何利用 Spire.PDF for Python 庫實現(xiàn)圖像轉(zhuǎn)換和合并操作,有需要的小伙伴可以了解下

在數(shù)字化時代,圖像與文檔的轉(zhuǎn)換與管理變得越來越重要。尤其是在需要將多張 JPG 或 PNG 圖片合并成一份 PDF 文件時,使用 Python 編程語言提供了一種簡單而高效的解決方案。本文將介紹如何利用 Spire.PDF for Python 庫實現(xiàn)圖像轉(zhuǎn)換和合并操作。

一、工具準備

在開始之前,確保你已經(jīng)安裝了 Python 環(huán)境以及 Spire.PDF for Python 庫??梢酝ㄟ^以下命令進行安裝:

pip install Spire.PDF

此外,確保你的電腦上有需要轉(zhuǎn)換的 JPG 或 PNG 圖像,并將其放在一個文件夾中。

二、代碼實現(xiàn)

以下是將 JPG 和 PNG 圖片轉(zhuǎn)換為 PDF 文件的示例代碼:

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

# 創(chuàng)建 PdfDocument 對象
doc = PdfDocument()

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

# 獲取圖片存儲文件夾路徑
path = "C:\Users\Administrator\Desktop\Images\"
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))

        # 在頁面的 (0, 0) 位置繪制圖像
        page.Canvas.DrawImage(image, 0.0, 0.0, width, height)
      
# 保存文件
doc.SaveToFile("output/CombineImages.pdf")
doc.Dispose()

三、代碼解析

導(dǎo)入庫 :首先,導(dǎo)入所需的 spire.pdfos 庫,后者用于文件和目錄操作。

創(chuàng)建 PdfDocument 對象 :使用 PdfDocument() 初始化一個 PDF 文檔對象,之后可以對該對象進行進一步操作。

設(shè)置頁面邊距 :調(diào)用 SetMargins(0.0) 方法,將頁面邊距設(shè)置為 0,這樣圖像可以完全填滿整個頁面。

讀取圖像 :使用 os.listdir(path) 獲取指定目錄下的所有文件,并使用 os.walk 遍歷該目錄中的所有文件。

加載和處理圖像 :對于每個文件,使用 PdfImage.FromFile() 函數(shù)加載圖像,并獲取其寬度和高度。

添加頁面 :根據(jù)圖像的尺寸創(chuàng)建一個與其相同大小的頁面,使用 doc.Pages.Add() 方法。

繪制圖像 :使用 page.Canvas.DrawImage() 將圖像繪制到頁面的指定位置。

保存 PDF 文件 :最后,調(diào)用 doc.SaveToFile() 將合并后的 PDF 文件保存到指定路徑。

四、方法補充

Python 實現(xiàn)圖片轉(zhuǎn)PDF

以下是將一個文件夾中的多張圖片轉(zhuǎn)換為一個PDF文件的示例。幾乎每行代碼都有詳細注釋,并且Spire.PDF for Python提供的接口也非常簡單易懂,大家可直接查看。

from spire.pdf.common import *
from spire.pdf import *
import os
# 創(chuàng)建PdfDocument對象
doc = PdfDocument()
# 將頁邊距設(shè)置為0
doc.PageSettings.SetMargins(0.0)
# 指定存放圖片的文件夾路徑
path = "C:\\Users\\Administrator\\Desktop\\圖片\\"
files = os.listdir(path)
# 遍歷文件夾中的文件
for root, dirs, files in os.walk(path):
    for file in files:
        # 加載圖片
        image = PdfImage.FromFile(os.path.join(root, file))  #FromFile(os.path.join(root, file))
        # 獲取圖片的寬度和高度
        width = image.PhysicalDimension.Width
        height = image.PhysicalDimension.Height
        # 在PDF中添加與圖片相同尺寸的頁面
        page = doc.Pages.Add(SizeF(width, height))
        # 從頁面的 (0, 0) 處開始繪制圖片
        page.Canvas.DrawImage(image, 0.0, 0.0, width, height)
# 保存生成文件
doc.SaveToFile("圖片轉(zhuǎn)Pdf.pdf")
doc.Dispose()

Python3將jpg轉(zhuǎn)為pdf文件

#coding=utf-8
#!/usr/bin/env python
"""
convert image to pdf file
"""
#Author: mrbeann
import os
import sys
import glob
import platform
from reportlab.lib.pagesizes import letter, A4, landscape
from reportlab.platypus import SimpleDocTemplate, Image
from reportlab.lib.units import inch
from reportlab.pdfgen import canvas
from reportlab import rl_settings
from PIL import Image
import importlib,sys
#importlib.reload(sys)
#sys.setdefaultencoding("utf-8")
def topdf(path,recursion=None,pictureType=None,sizeMode=None,width=None,height=None,fit=None,save=None):
"""
Parameters
----------
path : string
path of the pictures
recursion : boolean
None or False for no recursion
True for recursion to children folder
wether to recursion or not
pictureType : list
type of pictures,for example :jpg,png...
sizeMode : int
None or 0 for pdf's pagesize is the biggest of all the pictures
1 for pdf's pagesize is the min of all the pictures
2 for pdf's pagesize is the given value of width and height
to choose how to determine the size of pdf
width : int
width of the pdf page
height : int
height of the pdf page
fit : boolean
None or False for fit the picture size to pagesize
True for keep the size of the pictures
wether to keep the picture size or not
save : string
path to save the pdf
"""
if platform.system() == 'Windows':
path = path.replace('\\','/')
if path[-1] != '/':
path = (path + '/')
if recursion == True:
for i in os.listdir(path):
if os.path.isdir(os.path.abspath(os.path.join(path, i))):
topdf(path+i,recursion,pictureType,sizeMode,width,height,fit,save)
filelist = []
if pictureType == None:
filelist = glob.glob(os.path.join(path, '*.jpg'))
else:
for i in pictureType:
filelist.extend(glob.glob(os.path.join(path, '*.'+i)))
maxw = 0
maxh = 0
if sizeMode == None or sizeMode == 0:
for i in filelist:
im = Image.open(i)
if maxw < im.size[0]:
maxw = im.size[0]
if maxh < im.size[1]:
maxh = im.size[1]
elif sizeMode == 1:
maxw = 999999
maxh = 999999
for i in filelist:
im = Image.open(i)
if maxw > im.size[0]:
maxw = im.size[0]
if maxh > im.size[1]:
maxh = im.size[1]
else:
if width == None or height == None:
raise Exception("no width or height provid")
maxw = width
maxh = height
maxsize = (maxw,maxh)
if save == None:
filename_pdf = path + path.split('/')[-2]
else:
filename_pdf = save + path.split('/')[-2]
filename_pdf = filename_pdf + '.pdf'
c = canvas.Canvas(filename_pdf, pagesize=maxsize )
l = len(filelist)
for i in range(l):
(w, h) =maxsize
width, height = letter
if fit == True:
c.drawImage(filelist[i] , 0,0)
else:
c.drawImage(filelist[i] , 0,0,maxw,maxh)
c.showPage()
c.save()
def main():
topdf(u'F:/gitplace/jpg2pdf/test',pictureType=['png','jpg'],save='F:/gitplace/jpg2pdf/test/新建文件夾')
if __name__ == '__main__':
main()

五、總結(jié)

通過使用 Spire.PDF for Python 庫,我們可以輕松地將多張 JPG 或 PNG 圖像合并為一份 PDF 文件。這種方法不僅簡單高效,而且在處理大量圖像時表現(xiàn)出色。無論是工作還是個人項目,這種自動化的圖片處理方式都能夠節(jié)省大量時間。希望這篇文章能幫助你更好地掌握圖像轉(zhuǎn)換與合并的技巧!

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

相關(guān)文章

  • Python獲取當前路徑實現(xiàn)代碼

    Python獲取當前路徑實現(xiàn)代碼

    這篇文章主要介紹了 Python獲取當前路徑實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • python3.5仿微軟計算器程序

    python3.5仿微軟計算器程序

    這篇文章主要為大家詳細介紹了python3.5仿微軟計算器程序的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • python獲取網(wǎng)絡(luò)圖片方法及整理過程詳解

    python獲取網(wǎng)絡(luò)圖片方法及整理過程詳解

    這篇文章主要介紹了python獲取網(wǎng)絡(luò)圖片方法及整理過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • python正則表達式re.group()用法

    python正則表達式re.group()用法

    本文主要介紹了python正則表達式re.group()用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • 在pycharm中創(chuàng)建django項目的示例代碼

    在pycharm中創(chuàng)建django項目的示例代碼

    這篇文章主要介紹了在pycharm中創(chuàng)建django項目的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Python入門教程(二十一)Python的數(shù)組

    Python入門教程(二十一)Python的數(shù)組

    這篇文章主要介紹了Python入門教程(二十一)Python的數(shù)組,數(shù)組是一種特殊變量,數(shù)組可以在單個名稱下保存多個值,我們可以通過引用索引號來訪問這些值,需要的朋友可以參考下
    2023-04-04
  • python實現(xiàn)list由于numpy array的轉(zhuǎn)換

    python實現(xiàn)list由于numpy array的轉(zhuǎn)換

    下面小編就為大家分享一篇python實現(xiàn)list由于numpy array的轉(zhuǎn)換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python?NumPy教程之數(shù)據(jù)類型對象詳解

    Python?NumPy教程之數(shù)據(jù)類型對象詳解

    每個?ndarray?都有一個關(guān)聯(lián)的數(shù)據(jù)類型?(dtype)?對象。這個數(shù)據(jù)類型對象(dtype)告訴我們數(shù)組的布局。本文將通過示例詳細講講NumPy的數(shù)據(jù)類型對象,需要的可以參考一下
    2022-08-08
  • 淺談keras中的目標函數(shù)和優(yōu)化函數(shù)MSE用法

    淺談keras中的目標函數(shù)和優(yōu)化函數(shù)MSE用法

    這篇文章主要介紹了淺談keras中的目標函數(shù)和優(yōu)化函數(shù)MSE用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Django配置文件代碼說明

    Django配置文件代碼說明

    在本篇文章里小編給大家整理了關(guān)于Django配置文件代碼說明知識點,有需要的朋友們學習下。
    2019-12-12

最新評論

郧西县| 南京市| 长宁区| 山阳县| 大安市| 凯里市| 佛教| 大余县| 松阳县| 增城市| 钟祥市| 宜宾市| 天津市| 成武县| 馆陶县| 安岳县| 五华县| 会理县| 和林格尔县| 沅陵县| 喀喇沁旗| 民权县| 白河县| 高要市| 深泽县| 屯门区| 屏边| 民丰县| 射洪县| 尚志市| 保山市| 东阿县| 庆安县| 泗洪县| 贵港市| 惠东县| 普安县| 石门县| 枝江市| 晋城| 米易县|