使用Python插入SVG到PDF文檔中的方法示例
引言
將SVG(可縮放矢量圖形)文件插入到PDF(便攜式文檔格式)文件中不僅能夠保留SVG圖像的矢量特性,確保圖像在任何分辨率下都保持清晰,還能夠充分利用PDF格式在跨平臺(tái)文檔分享方面的優(yōu)勢,使得技術(shù)文檔、手冊(cè)、報(bào)告等內(nèi)容更加豐富多樣且易于傳播。使用Python可以輕松實(shí)現(xiàn)SVG到PDF的插入。本文將介紹如何使用Python插入SVG文件到PDF文檔中。
文所使用的方法需要用到Spire.PDF for Python,PyPI:pip install Spire.PDF
。
用Python插入SVG到PDF頁面
我們可以PdfDocument.LoadFromFile()
方法載入并讀取SVG文件內(nèi)容,然后使用PdfPageBase.Canvas.Draw()
方法將其繪制在PDF頁面上來實(shí)現(xiàn)插入SVG文件內(nèi)容到PDF頁面上。以下是詳細(xì)操作步驟:
- 導(dǎo)入所需模塊。
- 創(chuàng)建
PdfDocument
對(duì)象并使用PdfDocument.LoadFromFile()
方法載入PDF文件。 - 創(chuàng)建另一個(gè)
PdfDocument
對(duì)象并使用PdfDocument.LoadFromFile()
方法載入SVG文件。 - 使用
PdfDocument.Pages.get_Item(0).CreateTemplate()
方法讀取SVG文件內(nèi)容創(chuàng)建模板。 - 使用
PdfDocument.Pages.get_Item().Canvas.DrawTemplate()
方法將SVG文件內(nèi)容繪制在PDF頁面上。 - 使用
PdfDocument.SaveToFile()
方法保存文檔。 - 釋放資源。
代碼示例
from spire.pdf import PdfDocument, PointF, SizeF, FileFormat # 創(chuàng)建PdfDocument實(shí)例并加載PDF文件 pdf = PdfDocument() pdf.LoadFromFile("Sample.pdf") # 創(chuàng)建另一個(gè)PdfDocument實(shí)例并加載SVG文件 svg = PdfDocument() svg.LoadFromFile("圖表.svg", FileFormat.SVG) # 創(chuàng)建SVG文件的模板 svgTemplate = svg.Pages.get_Item(0).CreateTemplate() # 在現(xiàn)有PDF文件的頁面上繪制模板 pdf.Pages.get_Item(0).Canvas.DrawTemplate(svgTemplate, PointF(60.0, 420.0), SizeF(490.0, 230.0)) # 保存PDF文件 pdf.SaveToFile("output/繪制SVG到PDF.pdf") pdf.Dispose()
結(jié)果
用Python將SVG作為附件嵌入PDF
我們還可以將SVG文件作為附件直接嵌入到PDF文檔中,瀏覽文檔時(shí)點(diǎn)擊附件即可查看SVG文件內(nèi)容。需要注意的是,直接嵌入的附件只會(huì)在PDF查看器的附件欄顯示。以下是詳細(xì)操作步驟:
- 導(dǎo)入所需模塊。
- 創(chuàng)建
PdfDocument
對(duì)象并使用PdfDocument.LoadFromFile()
方法載入PDF文檔。 - 創(chuàng)建
PdfAttachment
對(duì)象以創(chuàng)建一個(gè)附件。 - 創(chuàng)建
Stream
對(duì)象,將SVG文件載入為流。 - 使用
Stream.ToArray()
方法將SVG文件流轉(zhuǎn)換為字節(jié)數(shù)組,并通過PdfAttachment.Data
屬性將其設(shè)置為附件的數(shù)據(jù)。 - 通過
PdfAttachment.Description
和PdfAttachment.MimeType
屬性設(shè)置附件的說明和MIME類型。 - 使用
PdfDocument.Attachments.Add()
方法將附件添加到PDF文檔中。 - 使用
PdfDocument.SaveToFile()
方法保存文檔。 - 釋放資源。
代碼示例
from spire.pdf import PdfDocument, Stream, PdfAttachment # 創(chuàng)建PdfDocument實(shí)例并加載PDF文件 pdf = PdfDocument() pdf.LoadFromFile("Sample.pdf") # 創(chuàng)建PdfAttachment實(shí)例 svgAttachment = PdfAttachment("圖表.svg") # 加載SVG文件為流 svgStream = Stream("圖表.svg") # 設(shè)置SVG流作為附件數(shù)據(jù) svgAttachment.Data = svgStream.ToArray() # 設(shè)置附件描述和MIME類型 svgAttachment.Description = "這是一個(gè)SVG文件" svgAttachment.MimeType = "image/svg+xml" # 將附件添加到文檔中 pdf.Attachments.Add(svgAttachment) # 保存文檔 pdf.SaveToFile("output/插入SVG附件到PDF.pdf") pdf.Dispose()
結(jié)果
用Python將SVG作為附件注釋嵌入PDF
除了將SVG文件直接作為附件嵌入到PDF文檔中,我們還可以將SVG文件作為注釋的附件嵌入到PDF文檔中,從而在文檔頁面上提示附件信息。注釋附件能夠在頁面上顯示為圖表,并且能夠直接點(diǎn)擊進(jìn)行查看。以下是詳細(xì)操作步驟:
- 導(dǎo)入所需模塊。
- 創(chuàng)建
PdfDocument
對(duì)象并使用PdfDocument.LoadFromFile()
方法載入PDF文檔。 - 使用SVG文件創(chuàng)建一個(gè)
PdfAttachmentAnnotation
對(duì)象從而創(chuàng)建一個(gè)附件注釋。 - 使用
PdfAttachmentAnnotation
類下的屬性設(shè)置注釋格式。 - 使用
PdfPageBase.AnnotationsWidget.Add()
方法將附件注釋添加到PDF頁面上。 - 使用
PdfDocument.SaveToFile()
方法保存PDF文檔。 - 釋放資源。
代碼示例
from spire.pdf import PdfDocument, PdfAttachmentAnnotation, RectangleF, Color, PdfAnnotationFlags, PdfAttachmentIcon, \ PdfRGBColor # 創(chuàng)建PdfDocument實(shí)例并加載PDF文件 pdf = PdfDocument() pdf.LoadFromFile("Sample.pdf") # 創(chuàng)建PdfAttachmentAnnotation實(shí)例 rect = RectangleF.FromLTRB(90.0, 420.0, 120.0, 450.0) svgAnnotation = PdfAttachmentAnnotation(rect, "圖表.svg") # 設(shè)置注釋屬性 svgAnnotation.Color = PdfRGBColor(Color.get_Blue()) svgAnnotation.Flags = PdfAnnotationFlags.NoZoom svgAnnotation.Icon = PdfAttachmentIcon.Graph svgAnnotation.Text = "SVG圖表" # 將注釋添加到第一頁 pdf.Pages.get_Item(0).AnnotationsWidget.Add(svgAnnotation) # 保存文檔 pdf.SaveToFile("output/插入SVG附件注釋到PDF.pdf") pdf.Dispose()
結(jié)果
本文介紹了如何使用Python將SVG文件插入到PDF文檔中,包括直接將SVG文件內(nèi)容插入到PDF頁面和將SVG文件作為附件嵌入到PDF文檔中。
以上就是使用Python插入SVG到PDF文檔中的方法示例的詳細(xì)內(nèi)容,更多關(guān)于Python插入SVG到PDF的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 使用Python實(shí)現(xiàn)Excel文件轉(zhuǎn)換為SVG格式
- Python實(shí)現(xiàn)Word文檔轉(zhuǎn)換為圖片(JPG、PNG、SVG等常見格式)
- 使用Python代碼實(shí)現(xiàn)PDF文檔與SVG文件之間的轉(zhuǎn)換
- python Pygal庫生成SVG(可縮放矢量圖形)圖表示例
- python之matplotlib矢量圖svg?emf
- python利用lxml庫剩下操作svg圖片
- 一文帶你了解Python與svg之間的操作
- Python3.7將普通圖片(png)轉(zhuǎn)換為SVG圖片格式(網(wǎng)站logo圖標(biāo))動(dòng)起來
- Python中CairoSVG庫的使用教程
相關(guān)文章
使用TFRecord存取多個(gè)數(shù)據(jù)案例
今天小編就為大家分享一篇使用TFRecord存取多個(gè)數(shù)據(jù)案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02詳細(xì)解析Python當(dāng)中的數(shù)據(jù)類型和變量
這篇文章主要介紹了Python當(dāng)中的數(shù)據(jù)類型和變量,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-04-04如何在pyqt中實(shí)現(xiàn)全局事件實(shí)戰(zhàn)記錄
事件的處理機(jī)制非常的復(fù)雜,屬于PyQt底層的事,不必我們關(guān)心,學(xué)會(huì)使用就行,下面這篇文章主要給大家介紹了關(guān)于如何在pyqt中實(shí)現(xiàn)全局事件的相關(guān)資料,需要的朋友可以參考下2022-02-02Python保存數(shù)據(jù)到文件的實(shí)現(xiàn)方式
這篇文章主要介紹了Python保存數(shù)據(jù)到文件的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11Python語言編寫電腦時(shí)間自動(dòng)同步小工具
家里有臺(tái)很多年前買的電腦,CMOS電池殘廢了,經(jīng)常遇到開機(jī)后系統(tǒng)時(shí)間被重置的情況2013-03-03Django實(shí)現(xiàn)列表頁商品數(shù)據(jù)返回教程
這篇文章主要介紹了Django實(shí)現(xiàn)列表頁商品數(shù)據(jù)返回教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04Python詳解文字轉(zhuǎn)語音的實(shí)現(xiàn)
在自然語言處理上,文字、音頻互轉(zhuǎn)是一個(gè)很關(guān)鍵的技術(shù)點(diǎn)。對(duì)于語音轉(zhuǎn)文字,個(gè)人實(shí)現(xiàn)較為困難,我們可以使用語音轉(zhuǎn)文字的軟件或借助各API(如科大訊飛等)進(jìn)行移植開發(fā)。不過文字轉(zhuǎn)語音就相對(duì)而言容易實(shí)現(xiàn)很多了2022-02-02Pandas數(shù)據(jù)分組統(tǒng)計(jì)的實(shí)現(xiàn)示例
對(duì)數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì),主要適用DataFrame對(duì)象的groupby()函數(shù),本文就來詳細(xì)的介紹下Pandas數(shù)據(jù)分組統(tǒng)計(jì)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解下2023-11-11