一文詳解如何使用Python向PDF精確添加文本
PDF 文檔的版式特性使其適用于輸出不可變格式的報告與合同。但若要在此類文檔中插入或修改文本,常規(guī)方式難以實現(xiàn)。借助Python,我們可以高效地向 PDF 添加文本,實現(xiàn)從文檔生成到內(nèi)容管理的自動化流程。
本文將從以下方面介紹Python實現(xiàn)PDF中文本的添加:
本文使用的方法需要用到免費的Free Spire.PDF for Python,可通過pip安裝:
pip install spire.pdf.free
新建PDF并添加段落文本
在構建系統(tǒng)報告或生成模板文檔時,通常需要從空白頁插入一段段文本,保持排版一致性。
from spire.pdf import PdfDocument, PdfTrueTypeFont, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointF, RectangleF, \
PdfStringFormat, PdfTextAlignment, PdfVerticalAlignment
# 創(chuàng)建新的PDF文檔并添加頁面
pdf = PdfDocument()
page = pdf.Pages.Add()
# 待插入的文本內(nèi)容
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.")
# 設置字體、畫刷(顏色)和排版區(qū)域
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)
# 添加文字內(nèi)容
page.Canvas.DrawString(text, font, brush, layout_area, string_format, False)
# 保存并關閉
pdf.SaveToFile("output/new.pdf")
pdf.Close()
技術細節(jié)說明:
PdfTrueTypeFont可嵌入外部字體文件,適用于需要控制字體兼容性的場景;RectangleF定義文本區(qū)域邊界(支持自定義段落框);DrawString()支持超出區(qū)域自動換行;- 使用
PdfStringFormat設定水平方向與垂直方向的對齊方式。
生成的PDF文檔:

向現(xiàn)有PDF中插入文本內(nèi)容
當你已有一份PDF文件,但希望在某一頁添加標記或文字說明,例如審批標語、狀態(tài)說明等,可以使用如下方式:
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)
# 保存結(jié)果
pdf.SaveToFile("output/ModifiedPDF.pdf")
pdf.Close()
技術細節(jié)說明:
PdfFontFamily.TimesRoman屬于 PDF 標準內(nèi)置字體(無需嵌入);- 坐標
PointF(x, y)單位為磅(1 pt ≈ 0.3528 mm),以頁面左上角為 (0,0); - 無需設置區(qū)域框時,適用于短文本、標簽插入、動態(tài)蓋章等場景。
修改的PDF文檔:

復雜格式設置:添加透明旋轉(zhuǎn)水印文本
在文檔審閱或內(nèi)部版本發(fā)布場景中,常見的做法是添加一個帶透明度與旋轉(zhuǎn)角度的水印文字,以提示機密性或防止誤傳播。Spire.PDF 提供了畫布狀態(tài)保存、旋轉(zhuǎn)、透明度控制等接口,可用于實現(xiàn)這種復雜的格式需求。
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]
# 設置水印文本內(nèi)容
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
# 保存當前畫布狀態(tài)
state = page.Canvas.Save()
# 設置透明度
page.Canvas.SetTransparency(0.3)
# 平移至文本中心位置
page.Canvas.TranslateTransform(x + size.Width / 2, y + size.Height / 2)
# 旋轉(zhuǎn)文本(-45度斜著顯示)
page.Canvas.RotateTransform(-45.0)
# 繪制文本水?。ㄗ笊辖菫槠鹗键c,因此需偏移)
page.Canvas.DrawString(text, font, brush, PointF(-size.Width / 2, -size.Height / 2))
# 恢復畫布狀態(tài)
page.Canvas.Restore(state)
# 保存文檔
pdf.SaveToFile("output/with_watermark.pdf")
pdf.Close()
技術細節(jié)說明:
- 使用
SetTransparency(0.3)設置文本透明度,增強水印效果但不遮擋內(nèi)容; TranslateTransform()將畫布原點移動至文本中心;RotateTransform(-45)實現(xiàn)對角線旋轉(zhuǎn),常用于“CONFIDENTIAL”或“DRAFT”類水印;- 水印文本使用
DrawString()繪制,PointF(-size.Width / 2, -size.Height / 2)保證以中心為參考點; - 通過
Canvas.Save()與Canvas.Restore()管理局部畫布狀態(tài),避免影響頁面中其他元素。
修改后的PDF文檔:

總結(jié)
通過 Spire.PDF for Python,你可以使用簡潔的 Python 代碼在 PDF 中添加各類文本,功能包括:
| 功能項 | 方法與說明 |
|---|---|
| 從零創(chuàng)建文檔 | PdfDocument.Pages.Add() + DrawString() |
| 插入文本到現(xiàn)有文檔 | LoadFromFile() + PointF 定位文本插入點 |
| 控制排版樣式 | 使用 RectangleF + PdfStringFormat 控制對齊與區(qū)域 |
| 行文本支持 | 文本中添加 \n,自動換行渲染 |
| 字體與顏色控制 | 支持 TrueType 與 標準字體,自定義顏色 RGB |
這些操作覆蓋了 PDF 文本添加的主要應用場景,從文檔批量生成到人工標注支持,適合用于自動歸檔、審批流程、內(nèi)容輸出等業(yè)務場景。
到此這篇關于一文詳解如何使用Python向PDF精確添加文本的文章就介紹到這了,更多相關Python PDF添加文本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python3 面向?qū)ο骭_類的內(nèi)置屬性與方法的實例代碼
這篇文章主要介紹了python3 面向?qū)ο骭_類的內(nèi)置屬性與方法的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-11-11
python GUI庫圖形界面開發(fā)之PyQt5 UI主線程與耗時線程分離詳細方法實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5 UI主線程與耗時線程分離詳細方法實例,需要的朋友可以參考下2020-02-02
MediaPipe API實現(xiàn)骨骼識別功能分步講解流程
MediaPipe是用于構建多模態(tài)(例如視頻、音頻或任何時間序列數(shù)據(jù))、跨平臺(即eAndroid、IOS、web、邊緣設備)應用ML管道的框架。這篇文章主要介紹了MediaPipe API實現(xiàn)骨骼識別功能分步流程2022-09-09
python數(shù)據(jù)預處理 :樣本分布不均的解決(過采樣和欠采樣)
今天小編就為大家分享一篇python數(shù)據(jù)預處理 :樣本分布不均的解決(過采樣和欠采樣),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
使用Django開發(fā)簡單接口實現(xiàn)文章增刪改查
這篇文章主要介紹了使用Django開發(fā)簡單接口實現(xiàn)文章增刪改查,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-05-05

