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