使用Python實(shí)現(xiàn)向同一PDF添加附件與附件注釋
在文檔管理和報(bào)表生成中,將相關(guān)文件直接嵌入 PDF 可以大大提高信息整合度,讓收件人無需額外查找即可訪問所有資源。Python 結(jié)合 Spire.PDF,可以輕松實(shí)現(xiàn) PDF 附件的添加與注釋功能,無需依賴 Adobe Acrobat。
本文演示如何在 同一 PDF 文件中實(shí)現(xiàn) 直接添加附件和添加附件注釋,并說明每個(gè)操作的作用和適用場(chǎng)景,幫助你真正理解 PDF 附件處理的邏輯。
本文使用的方法需要用到免費(fèi)的 Free Spire.PDF for Python,可通過 PyPI 安裝:pip install spire.pdf。
1. 初始化 PDF 文檔
from spire.pdf import *
from spire.pdf.common import *
# PdfDocument 對(duì)象創(chuàng)建
doc = PdfDocument()
# 加載已有 PDF 文件
doc.LoadFromFile("Sample.pdf")
操作說明:
PdfDocument是 Spire.PDF 的核心類,用于表示和操作 PDF 文檔。LoadFromFile()可以加載已有 PDF,后續(xù)的附件操作都基于這個(gè)文檔進(jìn)行。
2. 添加外部文件作為 PDF 附件
# 創(chuàng)建 PdfAttachment 對(duì)象
attachment_one = PdfAttachment("Antivirus Software.pdf")
attachment_two = PdfAttachment("Steps for Backup.png")
# 將附件添加到 PDF
doc.Attachments.Add(attachment_one)
doc.Attachments.Add(attachment_two)
# 保存文件
doc.SaveToFile("output/DocumentAttachment.pdf")
使用說明:
PdfAttachment用于封裝需要添加的文件,包括 Excel、圖片或其他文檔。Attachments.Add()將附件嵌入 PDF,使所有相關(guān)文件集中在同一個(gè) PDF 內(nèi)。- 保存后,收件人可在 PDF 閱讀器中直接查看或提取這些附件。
效果展示:

適用場(chǎng)景:
- 發(fā)票或報(bào)表需要附帶原始數(shù)據(jù)文件。
- 項(xiàng)目文檔需要附帶圖紙、圖片或說明文件。
- 任何需要將多種資源整合到單一 PDF 的場(chǎng)景。
3. 在 PDF 頁(yè)面添加附件注釋
# 獲取特定頁(yè)面
page = doc.Pages[1]
# 繪制文本
str = "This is the document: "
font = PdfTrueTypeFont("Yu Gothic UI", 16.0, PdfFontStyle.Bold, True)
x = 50.0
y = doc.Pages[0].ActualSize.Height - 30.0
page.Canvas.DrawString(str, font, PdfBrushes.get_Blue(), x, y)
# 創(chuàng)建 PdfAttachmentAnnotation
data = Stream("G:/Documents/Update System.docx")
size = font.MeasureString(str)
bounds = RectangleF((x + size.Width + 5.0), y, 10.0, 15.0)
annotation = PdfAttachmentAnnotation(bounds, "Update System.docx", data)
# 設(shè)置注釋屬性
annotation.Color = PdfRGBColor(Color.get_Blue())
annotation.Flags = PdfAnnotationFlags.Default
annotation.Icon = PdfAttachmentIcon.Graph
annotation.Text = "Click to open"
# 添加到 PDF 頁(yè)面
page.AnnotationsWidget.Add(annotation)
# 保存文件
doc.SaveToFile("output/AnnotationAttachment.pdf")
操作說明:
PdfAttachmentAnnotation可以在 PDF 頁(yè)面上顯示附件圖標(biāo),用戶點(diǎn)擊即可打開附件。bounds定義注釋的位置和大小。Color、Icon和Text用于美化和提示操作。AnnotationsWidget.Add()將注釋添加到頁(yè)面上。
效果展示:

適用場(chǎng)景:
- 報(bào)告正文中嵌入支持文件,讓讀者點(diǎn)擊即可獲取。
- 教學(xué)或培訓(xùn)資料中附加示例文件。
- 需要對(duì)附件做視覺提示而非僅僅嵌入 PDF 時(shí)。
4. 總結(jié)
通過上述操作,開發(fā)者可以輕松實(shí)現(xiàn):
| 功能類型 | 關(guān)鍵類/方法 | 使用說明 |
|---|---|---|
| 添加附件 | PdfAttachment、Attachments.Add() | 將外部文件直接嵌入 PDF |
| 添加附件注釋 | PdfAttachmentAnnotation、AnnotationsWidget.Add() | 在頁(yè)面上顯示附件圖標(biāo)并可點(diǎn)擊打開 |
| 設(shè)置字體與顏色 | PdfTrueTypeFont、PdfBrushes | 為頁(yè)面文本提供美觀的顯示 |
| 保存 PDF | SaveToFile() | 保存修改后的 PDF 文件 |
通過結(jié)合附件和注釋,PDF 不僅可以承載文本內(nèi)容,還可以攜帶完整的支持文件,大大提升文檔的完整性和易用性。
到此這篇關(guān)于使用Python實(shí)現(xiàn)向同一PDF添加附件與附件注釋的文章就介紹到這了,更多相關(guān)Python PDF添加附件與附件注釋內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pip安裝時(shí)ReadTimeoutError的解決方法
今天小編就為大家分享一篇pip安裝時(shí)ReadTimeoutError的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
Django命名URL和反向解析URL實(shí)現(xiàn)解析
這篇文章主要介紹了Django命名URL和反向解析URL實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python語(yǔ)言中的數(shù)據(jù)類型-序列
這篇文章主要介紹了Python語(yǔ)言中的數(shù)據(jù)類型-序列,前面我們提到了Python數(shù)據(jù)類型中的內(nèi)置數(shù)值類型與字符串類型。今天學(xué)習(xí)一下Python的序列數(shù)據(jù)類型,要知道的是在Python中沒有數(shù)組這一數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考一下2022-02-02
Python使用lxml庫(kù)高效解析HTML/XML文檔的全面指南
lxml是Python中最高效的XML/HTML處理庫(kù),結(jié)合了ElementTree的簡(jiǎn)單API和libxml2/libxslt的強(qiáng)大性能,本文給大家詳細(xì)介紹了Python使用lxml庫(kù)高效解析HTML/XML文檔的全面指南,需要的朋友可以參考下2025-08-08

