翻譯|使用教程|編輯:吉煒煒|2025-07-17 11:34:08.500|閱讀 104 次
概述:相比手動操作或依賴復雜工具,使用專業的 PDF 庫能讓你通過幾行代碼精準地控制文本位置、樣式和內容。本文將借助功能強大的 Spire.PDF for Python 庫,演示如何實現這些操作。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
在處理 PDF 時,向文檔中添加文字是非常常見的場景,比如自動生成報告、插入批注說明、填寫表單模板或添加版本標記等。借助 Python 向 PDF 插入文本,可以大幅提升文檔處理的靈活性與自動化效率。
相比手動操作或依賴復雜工具,使用專業的 PDF 庫能讓你通過幾行代碼精準地控制文本位置、樣式和內容。E-iceblue旗下Spire系列產品,是文檔處理組件領域的佼佼者,支持國產化信創。本文將介紹,如何借助功能強大的 Spire.PDF for Python 庫,演示如何實現這些操作。
加入Spire技術交流QQ群(125237868),與更多開發者一起提升文檔開發技能。
開始前,請先安裝 Spire.PDF for Python:
pip install Spire.PDF
選擇 Spire.PDF 的理由:
如果你需要從零創建一個 PDF 文件并寫入文字,以下示例展示了如何在空白頁面中插入帶有自定義樣式的文本內容。
from spire.pdf import PdfDocument, PdfTrueTypeFont, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointF, RectangleF, \ PdfStringFormat, PdfTextAlignment, PdfVerticalAlignment # 創建一個新的 PDF 文檔并添加一頁 pdf = PdfDocument() page = pdf.Pages.Add() # 要繪制的文本內容(示例字符串) text = ("本報告總結了 2025 年第一季度各類產品的銷售表現。" + "以下是按產品類別劃分的總銷售額明細," + "隨后是各個地區的銷售對比分析。") # 設置字體、畫刷和起始坐標點 font = PdfTrueTypeFont("微軟雅黑", 14.0, PdfFontStyle.Regular, True) # 使用 Arial 字體,14號,常規樣式,嵌入字體 brush = PdfSolidBrush(PdfRGBColor(0, 0, 0)) # 使用黑色實心畫刷 point = PointF(50.0, 100.0) # 文本起始繪制坐標(未被實際使用) # 設置文本布局區域和格式 layoutArea = RectangleF(50.0, 50.0, page.GetClientSize().Width - 100.0, page.GetClientSize().Height) # 從頁面距離左邊 50、高度 50 的位置開始繪制文本,寬度為頁面寬度減去兩側各 50 的邊距,高度為整頁高度 stringFormat = PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Top) # 文本左對齊,垂直頂部對齊 # 在頁面上繪制文本 page.Canvas.DrawString(text, font, brush, layoutArea, stringFormat, False) # 保存 PDF 文件并關閉文檔 pdf.SaveToFile("output/new.pdf") pdf.Close()
要點說明:
生成的 PDF 文件:
提示: 若有多段文字或需手動換行,可調整 Y 坐標或多次調用 DrawString() 分段插入。
若你希望在現有 PDF 文檔中添加文字,可通過加載 PDF、定位頁面,并指定位置插入文本。
常見應用場景:
from spire.pdf import PdfDocument, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointF, PdfCjkStandardFont, PdfCjkFontFamily # 加載已有的 PDF 文檔 pdf = PdfDocument() pdf.LoadFromFile("input.pdf") # 從文件加載 PDF page = pdf.Pages[0] # 獲取第一頁 # 設置字體為 Times Roman,字號 12,加粗 font = PdfCjkStandardFont(PdfCjkFontFamily.MonotypeHeiMedium, 16.0, PdfFontStyle.Bold) # 使用紅色畫刷 brush = PdfSolidBrush(PdfRGBColor(255, 0, 0)) # 紅色 # 設置文本繪制位置 location = PointF(150.0, 110.0) # 在指定位置繪制文本 page.Canvas.DrawString("本文件已批準。", font, brush, location) # 保存修改后的 PDF 文件 pdf.SaveToFile("output/modified.pdf") pdf.Close()
要點說明:
保存的 PDF 文件:
通過調整坐標參數,即可靈活控制文本位置。
添加文本不僅僅是插入內容,更重要的是其呈現方式。Spire.PDF 支持多種文本樣式控制,包括字體、顏色、對齊方式、透明度和旋轉角度,常用于水印或提示標簽。
# 創建 PdfTrueTypeFont(使用系統中的 Calibri 字體,16號,斜體,嵌入字體) font = PdfTrueTypeFont("Calibri", 16.0, PdfFontStyle.Italic, True) # 創建 PdfFont(使用內置 Times Roman 字體,16號,斜體) font = PdfFont(PdfFontFamily.TimesRoman, 16.0, PdfFontStyle.Italic) # 創建 PdfBrush,用于設置文本繪制顏色 brush = PdfSolidBrush(PdfRGBColor(34, 139, 34)) # 森林綠(forest green)
PdfTrueTypeFont 支持將字體嵌入 PDF,確保在不同設備上顯示一致。如需減小文件體積,可使用系統字體(不嵌入)。
# 保存當前畫布狀態 state = page.Canvas.Save() # 設置半透明效果(0.0 = 完全透明,1.0 = 完全不透明) page.Canvas.SetTransparency(0.4) # 將原點移動到頁面中心 page.Canvas.TranslateTransform(page.Size.Width / 2, page.Size.Height / 2) # 將畫布逆時針旋轉 45 度 page.Canvas.RotateTransform(-45) # 在新的原點位置繪制文本 page.Canvas.DrawString("草稿", font, brush, PointF(-50, -20))
透明度與旋轉角度的結合,常用于創建水印、對角標記等視覺效果。
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 = "請勿外傳此文檔" # 將 "Confidential" 翻譯為中文“機密” # 創建字體(微軟雅黑,40號,加粗,嵌入字體) font = PdfTrueTypeFont("微軟雅黑", 40.0, PdfFontStyle.Bold, True) # 創建畫刷(深藍色) brush = PdfSolidBrush(PdfRGBColor(Color.get_DarkBlue())) # 測量文字尺寸以計算居中位置 size = font.MeasureString(text) x = (page.Canvas.ClientSize.Width - size.Width) / 2 y = (page.Canvas.ClientSize.Height - size.Height) / 2 # 保存當前畫布狀態 state = page.Canvas.Save() # 設置透明度為 0.3(30% 不透明) 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 文件 pdf.SaveToFile("output/with_watermark.pdf") pdf.Close()
常用于生成自動水印文字,如 “CONFIDENTIAL”、“COPY” 等,可靈活用于批量處理。
生成的 PDF 文件:
文件正在被其他程序占用,保存時可能遇到 PermissionError。
在不同平臺或字體環境下添加文本時,可能會遇到如下問題。以下是一些常見問題及解決建議:
問題 | 可能原因 | 解決方案 |
---|---|---|
文本位置偏差 | 坐標設置未考慮頁面尺寸 | 使用 ClientSize 或 MeasureString() 實現動態適配 |
字體無法顯示 | 缺少對應字體或不支持字符集 | 嵌入常用字體如 Arial Unicode,或使用 Noto Sans 等 Unicode 字體 |
Unicode 字符亂碼 | 字體不支持全字符集 | 使用支持廣泛字符集的字體并嵌入 |
內容重疊 | 行距或位置設置不當 | 使用 MeasureString() 計算文本高度,合理設置 Y 坐標 |
出現水印文字 | 使用試用版未授權 | 使用免費版本,或申請臨時授權 |
文件體積變大 | 嵌入字體增加文件大小 | 如不需跨設備顯示一致性,可使用不嵌入字體的 PdfFont |
macOS/Linux 顯示異常 | 系統字體差異或度量方式不同 | 攜帶字體文件,或使用跨平臺字體以確保一致性 |
|
通過 Spire.PDF for Python,你可以靈活地實現 PDF 文檔的文字添加,無論是新建文檔、修改現有文件,還是批量處理。該庫提供豐富的樣式與位置控制選項,適用于自動化報告、水印標注、模板填充等多種場景。
使用如 Spire.PDF 等庫,通過 DrawString() 方法添加文字,并可設置字體、顏色和位置等屬性。
當然可以。加載 PDF 后通過頁面對象調用 DrawString() 添加內容即可。
逐行讀取 TXT 文件內容,結合 DrawString() 方法按需寫入 PDF 頁面。
可以。遍歷文件目錄,對每個 PDF 分別加載并插入指定文字即可完成批量處理。
————————————————————————————————————————
關于慧都科技:
慧都科技是一家行業數字化解決方案公司,長期專注于軟件、油氣與制造行業。公司基于深入的業務理解與管理洞察,以系統化的業務建模驅動技術落地,幫助企業實現智能化運營與長期競爭優勢。在軟件工程領域,我們提供開發控件、研發管理、代碼開發、部署運維等軟件開發全鏈路所需的產品,提供正版授權采購、技術選型、個性化維保等服務,幫助客戶實現技術合規、降本增效與風險可控。慧都科技E-iceblue的官方授權代理商,提供E-iceblue系列產品免費試用,咨詢,正版銷售等于一體的專業化服務。E-iceblue旗下Spire系列產品是國產文檔處理領域的優秀產品,支持國產化信創,幫助企業高效構建文檔處理的應用程序。
歡迎下載|體驗更多E-iceblue產品
獲取更多信息請咨詢 ;技術交流Q群(125237868)
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網