PDF 文檔的版式特性使其適用于輸出不可變格式的報告與合同。但若要在此類文檔中插入或修改文本,常規方式難以實現。借助Python,我們可以高效地向 PDF 添加文本,實現從文檔生成到內容管理的自動化流程。
本文將從以下方面介紹Python實現PDF中文本的添加:
文章目錄
- 新建PDF并添加段落文本
- 向現有PDF中插入文本內容
- 復雜格式設置:添加透明旋轉水印文本
- 總結
本文使用的方法需要用到免費的Free Spire.PDF for Python,可通過pip安裝:
pip install spire.pdf.free
新建PDF并添加段落文本
在構建系統報告或生成模板文檔時,通常需要從空白頁插入一段段文本,保持排版一致性。
from spire.pdf import PdfDocument, PdfTrueTypeFont, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointF, RectangleF, \PdfStringFormat, PdfTextAlignment, PdfVerticalAlignment# 創建新的PDF文檔并添加頁面
pdf = PdfDocument()
page = pdf.Pages.Add()# 待插入的文本內容
text = ("The purpose of this document is to provide an overview of the company’s financial highlights for the fiscal year 2024. ""It includes revenue trends, operational costs, and net income summaries. ""The following sections will outline each metric in more detail.")# 設置字體、畫刷(顏色)和排版區域
font = PdfTrueTypeFont("Arial", 14.0, PdfFontStyle.Regular, True)
brush = PdfSolidBrush(PdfRGBColor(0, 0, 0)) # 黑色文本
layout_area = RectangleF(50.0, 50.0, page.GetClientSize().Width - 100.0, page.GetClientSize().Height)
string_format = PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Top)# 添加文字內容
page.Canvas.DrawString(text, font, brush, layout_area, string_format, False)# 保存并關閉
pdf.SaveToFile("output/new.pdf")
pdf.Close()
📌 技術細節說明:
PdfTrueTypeFont
可嵌入外部字體文件,適用于需要控制字體兼容性的場景;RectangleF
定義文本區域邊界(支持自定義段落框);DrawString()
支持超出區域自動換行;- 使用
PdfStringFormat
設定水平方向與垂直方向的對齊方式。
生成的PDF文檔:
向現有PDF中插入文本內容
當你已有一份PDF文件,但希望在某一頁添加標記或文字說明,例如審批標語、狀態說明等,可以使用如下方式:
from spire.pdf import PdfDocument, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointF, PdfFont, PdfFontFamily# 加載已有PDF文檔
pdf = PdfDocument()
pdf.LoadFromFile("PDF.pdf")
page = pdf.Pages[0]# 設置字體、顏色和插入位置
font = PdfFont(PdfFontFamily.TimesRoman, 12.0, PdfFontStyle.Bold)
brush = PdfSolidBrush(PdfRGBColor(0, 128, 0)) # 深綠色
location = PointF(130.0, 90.0)# 插入文本
page.Canvas.DrawString("Verified by QA Department", font, brush, location)# 保存結果
pdf.SaveToFile("output/ModifiedPDF.pdf")
pdf.Close()
📌 技術細節說明:
PdfFontFamily.TimesRoman
屬于 PDF 標準內置字體(無需嵌入);- 坐標
PointF(x, y)
單位為磅(1 pt ≈ 0.3528 mm),以頁面左上角為 (0,0); - 無需設置區域框時,適用于短文本、標簽插入、動態蓋章等場景。
修改的PDF文檔:
復雜格式設置:添加透明旋轉水印文本
在文檔審閱或內部版本發布場景中,常見的做法是添加一個帶透明度與旋轉角度的水印文字,以提示機密性或防止誤傳播。Spire.PDF 提供了畫布狀態保存、旋轉、透明度控制等接口,可用于實現這種復雜的格式需求。
from spire.pdf import PdfDocument, PdfTrueTypeFont, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointF
from spire.pdf.common import Color# 加載已有PDF文檔
pdf = PdfDocument()
pdf.LoadFromFile("input1.pdf")
page = pdf.Pages[0]# 設置水印文本內容
text = "Internal Use Only"# 設置字體樣式與大小
font = PdfTrueTypeFont("Arial", 40.0, PdfFontStyle.Bold, True)# 設置畫刷顏色為深紅色
brush = PdfSolidBrush(PdfRGBColor(Color.get_DarkRed()))# 測量文本大小以便居中放置
size = font.MeasureString(text)
x = (page.Canvas.ClientSize.Width - size.Width) / 2
y = (page.Canvas.ClientSize.Height - size.Height) / 2# 保存當前畫布狀態
state = page.Canvas.Save()# 設置透明度
page.Canvas.SetTransparency(0.3)# 平移至文本中心位置
page.Canvas.TranslateTransform(x + size.Width / 2, y + size.Height / 2)# 旋轉文本(-45度斜著顯示)
page.Canvas.RotateTransform(-45.0)# 繪制文本水印(左上角為起始點,因此需偏移)
page.Canvas.DrawString(text, font, brush, PointF(-size.Width / 2, -size.Height / 2))# 恢復畫布狀態
page.Canvas.Restore(state)# 保存文檔
pdf.SaveToFile("output/with_watermark.pdf")
pdf.Close()
📌 技術細節說明:
- 使用
SetTransparency(0.3)
設置文本透明度,增強水印效果但不遮擋內容; TranslateTransform()
將畫布原點移動至文本中心;RotateTransform(-45)
實現對角線旋轉,常用于“CONFIDENTIAL”或“DRAFT”類水印;- 水印文本使用
DrawString()
繪制,PointF(-size.Width / 2, -size.Height / 2)
保證以中心為參考點; - 通過
Canvas.Save()
與Canvas.Restore()
管理局部畫布狀態,避免影響頁面中其他元素。
修改后的PDF文檔:
總結
通過 Spire.PDF for Python,你可以使用簡潔的 Python 代碼在 PDF 中添加各類文本,功能包括:
功能項 | 方法與說明 |
---|---|
? 從零創建文檔 | PdfDocument.Pages.Add() + DrawString() |
? 插入文本到現有文檔 | LoadFromFile() + PointF 定位文本插入點 |
? 控制排版樣式 | 使用 RectangleF + PdfStringFormat 控制對齊與區域 |
? 多行文本支持 | 文本中添加 \n ,自動換行渲染 |
? 字體與顏色控制 | 支持 TrueType 與 標準字體 ,自定義顏色 RGB |
這些操作覆蓋了 PDF 文本添加的主要應用場景,從文檔批量生成到人工標注支持,適合用于自動歸檔、審批流程、內容輸出等業務場景。
📚 更多PDF編輯教程,請訪問:
Spire.PDF for Python 教程中心