使用Python插入SVG到PDF文檔中的方法示例
引言
將SVG(可縮放矢量圖形)文件插入到PDF(便攜式文檔格式)文件中不僅能夠保留SVG圖像的矢量特性,確保圖像在任何分辨率下都保持清晰,還能夠充分利用PDF格式在跨平臺文檔分享方面的優(yōu)勢,使得技術(shù)文檔、手冊、報告等內(nèi)容更加豐富多樣且易于傳播。使用Python可以輕松實現(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頁面上來實現(xiàn)插入SVG文件內(nèi)容到PDF頁面上。以下是詳細(xì)操作步驟:
- 導(dǎo)入所需模塊。
- 創(chuàng)建
PdfDocument對象并使用PdfDocument.LoadFromFile()方法載入PDF文件。 - 創(chuàng)建另一個
PdfDocument對象并使用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實例并加載PDF文件
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")
# 創(chuàng)建另一個PdfDocument實例并加載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文檔中,瀏覽文檔時點擊附件即可查看SVG文件內(nèi)容。需要注意的是,直接嵌入的附件只會在PDF查看器的附件欄顯示。以下是詳細(xì)操作步驟:
- 導(dǎo)入所需模塊。
- 創(chuàng)建
PdfDocument對象并使用PdfDocument.LoadFromFile()方法載入PDF文檔。 - 創(chuàng)建
PdfAttachment對象以創(chuàng)建一個附件。 - 創(chuàng)建
Stream對象,將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實例并加載PDF文件
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")
# 創(chuàng)建PdfAttachment實例
svgAttachment = PdfAttachment("圖表.svg")
# 加載SVG文件為流
svgStream = Stream("圖表.svg")
# 設(shè)置SVG流作為附件數(shù)據(jù)
svgAttachment.Data = svgStream.ToArray()
# 設(shè)置附件描述和MIME類型
svgAttachment.Description = "這是一個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文檔中,從而在文檔頁面上提示附件信息。注釋附件能夠在頁面上顯示為圖表,并且能夠直接點擊進行查看。以下是詳細(xì)操作步驟:
- 導(dǎo)入所需模塊。
- 創(chuàng)建
PdfDocument對象并使用PdfDocument.LoadFromFile()方法載入PDF文檔。 - 使用SVG文件創(chuàng)建一個
PdfAttachmentAnnotation對象從而創(chuàng)建一個附件注釋。 - 使用
PdfAttachmentAnnotation類下的屬性設(shè)置注釋格式。 - 使用
PdfPageBase.AnnotationsWidget.Add()方法將附件注釋添加到PDF頁面上。 - 使用
PdfDocument.SaveToFile()方法保存PDF文檔。 - 釋放資源。
代碼示例
from spire.pdf import PdfDocument, PdfAttachmentAnnotation, RectangleF, Color, PdfAnnotationFlags, PdfAttachmentIcon, \
PdfRGBColor
# 創(chuàng)建PdfDocument實例并加載PDF文件
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")
# 創(chuàng)建PdfAttachmentAnnotation實例
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的資料請關(guān)注腳本之家其它相關(guān)文章!
- 使用Python實現(xiàn)Excel文件轉(zhuǎn)換為SVG格式
- Python實現(xiàn)Word文檔轉(zhuǎn)換為圖片(JPG、PNG、SVG等常見格式)
- 使用Python代碼實現(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))動起來
- Python中CairoSVG庫的使用教程
相關(guān)文章
關(guān)于使用OpenCsv導(dǎo)入大數(shù)據(jù)量報錯的問題
這篇文章主要介紹了使用OpenCsv導(dǎo)入大數(shù)據(jù)量報錯的問題 ,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
分析機器學(xué)習(xí)之決策樹Python實現(xiàn)
決策樹是一種非參數(shù)的有監(jiān)督學(xué)習(xí)方法,它能夠從一系列有特征和標(biāo)簽的數(shù)據(jù)中總結(jié)出決策規(guī)則,并用樹狀圖的結(jié)構(gòu)來呈現(xiàn)這些規(guī)則,以解決分類和回歸問題。決策樹算法容易理解,適用各種數(shù)據(jù),在解決各種問題時都有良好表現(xiàn)2021-06-06
Python+FFmpeg實現(xiàn)視頻自動化處理的完整指南
本文總結(jié)了一套在Python中使用subprocess.run調(diào)用FFmpeg進行視頻自動化處理的解決方案,涵蓋了跨平臺硬件加速、中間素材處理和終極合并的邏輯,包括硬件編碼參數(shù)映射、精確變速剪輯、多流合并等,需要的朋友可以參考下2025-12-12
python執(zhí)行子進程實現(xiàn)進程間通信的方法
這篇文章主要介紹了python執(zhí)行子進程實現(xiàn)進程間通信的方法,涉及Python使用subprocess模塊操作進程的相關(guān)技巧,需要的朋友可以參考下2015-06-06

