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

Python實(shí)現(xiàn)PDF與多種圖片格式之間互轉(zhuǎn)(PNG, JPG, BMP, EMF, SVG)

 更新時(shí)間:2025年03月19日 10:53:13   作者:nuclear2011  
PDF和圖片是我們?nèi)粘I詈凸ぷ髦谐S玫奈募袷?有時(shí)候,我們可能需要將PDF和圖片進(jìn)行格式互轉(zhuǎn)來(lái)滿足不同的應(yīng)用場(chǎng)景和使用需求,這篇文章將探討如何使用Python實(shí)現(xiàn)PDF與多種圖片格式之間的相互轉(zhuǎn)換,需要的朋友可以參考下

一、介紹

PDF和圖片是我們?nèi)粘I詈凸ぷ髦谐S玫奈募袷健S袝r(shí)候,我們可能需要將PDF和圖片進(jìn)行格式互轉(zhuǎn)來(lái)滿足不同的應(yīng)用場(chǎng)景和使用需求。例如,將PDF轉(zhuǎn)換為圖片更有利于在網(wǎng)頁(yè)上或幻燈片中展示文件內(nèi)容,而將圖片轉(zhuǎn)換為PDF可以將多個(gè)圖片整合到一個(gè)文檔中,方便進(jìn)行文檔歸檔、電子書(shū)制作、打印或共享等操作。這篇文章將探討如何使用Python實(shí)現(xiàn)PDF與多種圖片格式之間的相互轉(zhuǎn)換。

二、安裝Python庫(kù)

我們需要借助Python類庫(kù)來(lái)實(shí)現(xiàn)PDF與圖片格式互轉(zhuǎn)。本文使用的類庫(kù)是Spire.PDF for Python,它可以把多種圖片格式轉(zhuǎn)換為PDF,也可以把PDF轉(zhuǎn)換成多種圖片格式。安裝過(guò)程比較簡(jiǎn)單,使用pip命令即可:

pip install Spire.PDF

下面我們來(lái)看如何借助這個(gè)庫(kù)實(shí)現(xiàn)PDF和圖片互轉(zhuǎn)。

三、Python實(shí)現(xiàn)多種圖片格式轉(zhuǎn)PDF

圖片轉(zhuǎn)PDF可以有不同的場(chǎng)景,比如我們可以把單張圖片轉(zhuǎn)換為PDF,也可以把多張圖片轉(zhuǎn)換為一個(gè)PDF。下面將分別介紹這兩種場(chǎng)景。

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

將單張圖片轉(zhuǎn)換為PDF的原理是將圖片繪制到PDF,下面是大概步驟:

  • 新建PDF。
  • 加載圖片,獲取圖片的寬高。
  • 添加一個(gè)與圖片寬高一致的頁(yè)面到PDF。
  • 把圖片繪制到頁(yè)面上。
  • 保存文檔。

代碼:

from spire.pdf.common import *
from spire.pdf import *
 
# 創(chuàng)建PdfDocument實(shí)例
doc = PdfDocument()
 
# 刪除頁(yè)邊距
doc.PageSettings.SetMargins(0.0)
 
# 加載一張圖片
image = PdfImage.FromFile("C:/Users/Administrator/Desktop/image.jpg")
 
# 獲取圖片的寬度和高度
width = image.PhysicalDimension.Width
height = image.PhysicalDimension.Height
 
# 添加頁(yè)面到PDF,設(shè)置頁(yè)面的寬度和高度與圖片一致
page = doc.Pages.Add(SizeF(width, height))       
 
# 把圖片繪制到頁(yè)面上
page.Canvas.DrawImage(image, 0.0, 0.0, width, height)
 
# 保存文檔
doc.SaveToFile("圖片轉(zhuǎn)PDF.pdf")
doc.Close()

注意,上面的代碼適用于PNG/JPG/BMP/EMF等格式,但不適用于SVG。如果需要將SVG轉(zhuǎn)換為PDF,參考以下代碼:

from spire.pdf.common import *
from spire.pdf import *
 
# 創(chuàng)建PdfDocument實(shí)例
doc = PdfDocument()
# 加載SVG
doc.LoadFromSvg("測(cè)試.svg")
 
# 保存SVG為PDF
doc.SaveToFile("SVG轉(zhuǎn)PDF.pdf", FileFormat.PDF)
doc.Close()

2、多張圖片轉(zhuǎn)換為一個(gè)PDF

多張圖片轉(zhuǎn)PDF的原理與單張圖片轉(zhuǎn)PDF一樣,就是添加多個(gè)頁(yè)面到PDF,然后依次將每個(gè)圖片繪制到對(duì)應(yīng)頁(yè)面上去。步驟與上面類似,此處省略。

代碼:

from spire.pdf.common import *
from spire.pdf import *
import os
 
# 創(chuàng)建PdfDocument實(shí)例
doc = PdfDocument()
 
# 刪除頁(yè)邊距
doc.PageSettings.SetMargins(0.0)
 
# 指定圖片文件夾路徑
image_dir = "C:/Users/Administrator/Desktop/圖片/"
 
# 遍歷文件夾中的圖片
for fileName in os.listdir(image_dir):
    image_path = os.path.join(image_dir, fileName)
 
    # 加載圖片
    image = PdfImage.FromFile(image_path)    
    # 獲取圖片寬高
    width = image.PhysicalDimension.Width
    height = image.PhysicalDimension.Height
 
    # 添加一個(gè)與圖片寬高一致的頁(yè)面到PDF
    page = doc.Pages.Add(SizeF(width, height))
 
    # 把圖片繪制到頁(yè)面上
    page.Canvas.DrawImage(image, 0.0, 0.0, width, height)
      
# 保存文檔
doc.SaveToFile("多張圖片轉(zhuǎn)PDF.pdf")
doc.Dispose()

四、Python實(shí)現(xiàn)PDF轉(zhuǎn)多種圖片格式

除了把多種圖片格式轉(zhuǎn)換為PDF,我們也可以把PDF轉(zhuǎn)換為PNG/JPG/BMP/EMF/SVG等多種圖片格式。

將PDF轉(zhuǎn)換為PNG/JPG/BMP/EMF的大致步驟如下:

  • 加載PDF。
  • 遍歷文檔頁(yè)面。
  • 將每個(gè)頁(yè)面轉(zhuǎn)換為圖片。

下面是將PDF轉(zhuǎn)換為PNG/JPG/BMP/EMF的代碼:

from spire.pdf.common import *
from spire.pdf import *
 
# 創(chuàng)建PdfDocument實(shí)例
doc = PdfDocument()
# 加載PDF文檔
doc.LoadFromFile("測(cè)試.pdf")
 
# 遍歷文檔頁(yè)面
for i in range(doc.Pages.Count):
    # 將每個(gè)頁(yè)面分別轉(zhuǎn)換為圖片(要轉(zhuǎn)換到其他的圖片格式,修改圖片后綴即可)
    fileName = "輸出/圖片-{0:d}.png".format(i)
    with doc.SaveAsImage(i) as imageS:
        imageS.Save(fileName)
 
doc.Close()

如要將PDF轉(zhuǎn)換為SVG,則不需要遍歷頁(yè)面,加載文檔后,可以直接使用類庫(kù)提供的方法來(lái)轉(zhuǎn)換,此外還可以設(shè)置轉(zhuǎn)換的SVG的尺寸:

from spire.pdf.common import *
from spire.pdf import *
 
# 創(chuàng)建PdfDocument實(shí)例
doc = PdfDocument()
# 加載PDF文檔
doc.LoadFromFile("測(cè)試.pdf")
 
# 指定轉(zhuǎn)換的SVG文件的尺寸
doc.ConvertOptions.SetPdfToSvgOptions(600.0, 600.0)
 
# 將每個(gè)頁(yè)面分別轉(zhuǎn)換為SVG
doc.SaveToFile("PDF轉(zhuǎn)SVG.svg", FileFormat.SVG)
doc.Close()

希望以上關(guān)于使用Python實(shí)現(xiàn)PDF和多種圖片格式互轉(zhuǎn)的內(nèi)容能對(duì)你有所幫助。

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

相關(guān)文章

  • python 借助numpy保存數(shù)據(jù)為csv格式的實(shí)現(xiàn)方法

    python 借助numpy保存數(shù)據(jù)為csv格式的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇python 借助numpy保存數(shù)據(jù)為csv格式的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python循環(huán)語(yǔ)句之break與continue的用法

    Python循環(huán)語(yǔ)句之break與continue的用法

    這篇文章主要介紹了Python循環(huán)語(yǔ)句之break與continue的用法,是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • Python和JavaScript間代碼轉(zhuǎn)換的4個(gè)工具

    Python和JavaScript間代碼轉(zhuǎn)換的4個(gè)工具

    JavaScript 已經(jīng)成為眾多其它編程語(yǔ)言爭(zhēng)相選擇的轉(zhuǎn)換目標(biāo)(相關(guān)實(shí)例包括 TypeScript、Emscripten、Cor 以及 Cheerp)。而 Python 則擁有龐大的追隨者群體,另外現(xiàn)有的強(qiáng)大庫(kù)資源則使其成為面向 JavaScript 的理想待轉(zhuǎn)換或者說(shuō)轉(zhuǎn)譯選項(xiàng)
    2016-02-02
  • 使用Python編寫(xiě)簡(jiǎn)單的畫(huà)圖板程序的示例教程

    使用Python編寫(xiě)簡(jiǎn)單的畫(huà)圖板程序的示例教程

    這篇文章主要介紹了使用Python編寫(xiě)簡(jiǎn)單的畫(huà)圖板軟件的示例教程,利用到了經(jīng)常被用來(lái)做游戲的pygame模塊,需要的朋友可以參考下
    2015-12-12
  • 分享Python開(kāi)發(fā)中要注意的十個(gè)小貼士

    分享Python開(kāi)發(fā)中要注意的十個(gè)小貼士

    不管是python開(kāi)發(fā)還是其他什么語(yǔ)言的開(kāi)發(fā),如果在開(kāi)發(fā)中我們能掌握一些有用的貼士和技巧,那么肯定會(huì)大大提高我們的開(kāi)發(fā)效率,今天小編和大家分享的就是python開(kāi)發(fā)中,一些初學(xué)這門(mén)語(yǔ)言常常會(huì)犯的錯(cuò)誤,一起來(lái)看看吧。
    2016-08-08
  • 淺談在django中使用filter()(即對(duì)QuerySet操作)時(shí)踩的坑

    淺談在django中使用filter()(即對(duì)QuerySet操作)時(shí)踩的坑

    這篇文章主要介紹了淺談在django中使用filter()(即對(duì)QuerySet操作)時(shí)踩的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • python實(shí)現(xiàn)簡(jiǎn)單遺傳算法

    python實(shí)現(xiàn)簡(jiǎn)單遺傳算法

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單的遺傳算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python進(jìn)階之利用+和*進(jìn)行列表拼接

    Python進(jìn)階之利用+和*進(jìn)行列表拼接

    在我們學(xué)習(xí)python的過(guò)程中,有一個(gè)非常常見(jiàn)的語(yǔ)法,那就是利用+和*進(jìn)行序列的拼接以及其他操作。今天就帶大家從使用+和*進(jìn)行拼接出發(fā)認(rèn)識(shí)一個(gè)大家非常容易犯的代碼錯(cuò)誤。話不多說(shuō)我們開(kāi)始吧
    2023-04-04
  • Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)圖像精靈下篇

    Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)圖像精靈下篇

    相信大多數(shù)8090后都玩過(guò)太空射擊游戲,在過(guò)去游戲不多的年代太空射擊自然屬于經(jīng)典好玩的一款了,今天我們來(lái)自己動(dòng)手實(shí)現(xiàn)它,在編寫(xiě)學(xué)習(xí)中回顧過(guò)往展望未來(lái),下面開(kāi)始入門(mén)篇
    2022-08-08
  • python切片及sys.argv[]用法詳解

    python切片及sys.argv[]用法詳解

    Sys.argv[]是用來(lái)獲取命令行參數(shù)的,sys.argv[0]表示代碼本身文件路徑,所以參數(shù)從1開(kāi)始。下面通過(guò)實(shí)例代碼給大家介紹python切片及sys.argv[]用法,需要的朋友參考下吧
    2018-05-05

最新評(píng)論

广灵县| 甘泉县| 栖霞市| 宜阳县| 云龙县| 台湾省| 旺苍县| 来凤县| 静海县| 攀枝花市| 汤原县| 万山特区| 沈丘县| 搜索| 攀枝花市| 托克托县| 承德县| 攀枝花市| 阳山县| 塔河县| 中牟县| 鄂托克前旗| 怀化市| 韶关市| 依兰县| 望江县| 商河县| 长葛市| 遂宁市| 桐城市| 汾西县| 涞源县| 斗六市| 沐川县| 北宁市| 高雄市| 罗山县| 普兰县| 鹿邑县| 定边县| 夏邑县|