Python輕松實現(xiàn)在PDF中插入頁眉頁腳
在制作 PDF 文件時,我們常常會遇到一個問題:文件內(nèi)容雖然齊全,但少了頁眉頁腳,顯得不夠?qū)I(yè)。尤其是在生成報告、論文或合同等正式文檔時,如果頁面上都沒有標(biāo)題、頁碼或公司名稱,不僅閱讀不便,還容易造成混淆。其實,這類問題完全可以用 Python 來快速解決——只需要簡單的代碼,就能在 PDF 中自動添加頁眉頁腳,讓文檔更規(guī)范、更具識別度。接下來,我們就來看看具體該怎么做。
本文中使用 Spire.PDF for Python,這個專業(yè)的 PDF 庫可以協(xié)助開發(fā)者簡單快速地處理 PDF 文件相關(guān)的各種任務(wù),是 Adobe Acrobat 的優(yōu)選替代方案。
Python 在 PDF 中插入頁眉
在 PDF 頁面上添加頁眉不僅能讓文檔更具專業(yè)感,還能提高閱讀與管理的效率。比如在頁眉中加入公司 logo、報告標(biāo)題或頁碼,讀者就能輕松識別文件來源并快速定位內(nèi)容。使用 Spire.PDF 提供的 PdfCanvas,你可以靈活地將文字、圖片或日期等信息繪制到指定位置,通過坐標(biāo)精確控制布局與樣式。相比手動逐頁添加,程序化生成頁眉不僅節(jié)省時間,還能保持版式一致。下面我們將介紹具體的實現(xiàn)步驟,并附上完整的代碼示例。
- 創(chuàng)建
PdfDocument對象,并使用PdfDocument.LoadFromFile()方法加載現(xiàn)有的 PDF 文件。 - 使用
PdfImage.FromFile()導(dǎo)入要繪制到頁眉的圖片,并獲取圖片寬度以便后續(xù)定位。 - 定義
PdfTrueTypeFont、PdfBrushes、PdfPen等屬性,用于設(shè)置文本、圖形和線條的樣式。 - 定義一個
String類型的頁眉文本內(nèi)容。 - 創(chuàng)建
PdfCreationDateField()對象,并設(shè)置日期格式。 - 創(chuàng)建
PdfCompositeField()對象,組合文本與日期內(nèi)容,并將其轉(zhuǎn)換為PdfGraphicsWidget類型。 - 遍歷 PDF 的每一頁,依次調(diào)用
PdfCanvas.DrawString()、PdfCanvas.DrawImage()、PdfCanvas.DrawLine()和PdfGraphicsWidget.Draw()方法繪制頁眉內(nèi)容。 - 使用
PdfDocument.SaveToFile()方法保存修改后的 PDF 文件。
下方為代碼示例,展示了怎樣在 Python 中為一個現(xiàn)有的 PDF 文件添加頁眉:
from spire.pdf.common import *
from spire.pdf import *
# 創(chuàng)建 PdfDocument 對象
doc = PdfDocument()
# 加載 PDF 文件
doc.LoadFromFile("E:/Administrator/Python1/input/AI繪畫的利與弊-圖片版.pdf")
# 加載頁眉圖片
headerImage = PdfImage.FromFile("F:/備用圖片/Logo1.png")
# 獲取圖片point寬度值
width = headerImage.Width
unitCvtr = PdfUnitConvertor()
pointWidth = unitCvtr.ConvertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point)
# 設(shè)置字體,畫刷和畫筆
font = PdfTrueTypeFont("宋體", 12.0, PdfFontStyle.Bold, True)
brush = PdfBrushes.get_Purple()
pen = PdfPen(brush, 1.0)
# 設(shè)置頁眉文本
headerText = "頁眉文本示例\nwww.sampleheader.cn"
# 設(shè)置創(chuàng)建時間字段格式
creationDateField = PdfCreationDateField(font, brush)
creationDateField.DateFormatString = "yyyy-MM-dd"
# 創(chuàng)建組合字段
compositeField = PdfCompositeField(font, brush, "創(chuàng)建時間: {0}", [creationDateField])
compositeField.Location=PointF(55.0,48.0)
graphicsWidget = PdfGraphicsWidget(compositeField)
# 循環(huán)遍歷文檔中的每一頁
for i in range(doc.Pages.Count):
# 獲取指定頁面
page = doc.Pages[i]
# 在指定位置繪制頁眉圖片
page.Canvas.DrawImage(headerImage, page.ActualSize.Width - pointWidth - 55.0, 20.0)
# 在指定位置繪制頁眉文本
page.Canvas.DrawString(headerText, font, brush, 55.0, 20.0)
# 繪制頁眉線條
page.Canvas.DrawLine(pen, 55.0, 70.0, page.ActualSize.Width - 55.0, 70.0)
# 繪制組合字段
graphicsWidget.Draw(page.Canvas)
# 保存文件
doc.SaveToFile("E:/Administrator/Python1/output/結(jié)果.pdf")
# 釋放文檔對象
doc.Dispose()
下方為該代碼輸出的結(jié)果文件示意圖:

Python 在 PDF 中添加頁腳
頁腳通常包含 PDF 文檔的頁碼信息、版權(quán)聲明、作者或公司名稱等內(nèi)容,這些信息能幫助讀者了解文檔來源并保持格式統(tǒng)一。通過頁腳,讀者還可以快速定位到特定頁面或章節(jié)位置,尤其在閱讀長篇報告、論文或合同時尤為方便。在 Spire.PDF 中,頁腳的繪制同樣依賴 PdfCanvas 方法,但由于其內(nèi)容和布局與頁眉不同,具體實現(xiàn)上會有一定差異。下面我們就來看看,在 Python 中如何為 PDF 添加頁腳。
- 創(chuàng)建
PdfDocument對象,并通過PdfDocument.LoadFromFile()方法加載現(xiàn)有的 PDF 文件。 - 使用
PdfImage.FromFile()導(dǎo)入要繪制到頁腳的圖片。 - 定義
PdfTrueTypeFont和PdfBrushes屬性,用于設(shè)置文本繪制所需的字體和畫刷樣式。 - 創(chuàng)建
PdfPageNumberField()與PdfPageCountField()對象,用于顯示當(dāng)前頁碼和總頁數(shù)。 - 使用
PdfCompositeField()組合頁碼信息與其他文本內(nèi)容,并將其轉(zhuǎn)換為PdfGraphicsWidget類型。 - 遍歷 PDF 的每一頁,調(diào)用
PdfCanvas.DrawImage()和PdfGraphicsWidget.Draw()方法繪制頁腳內(nèi)容。 - 使用
PdfDocument.SaveToFile()方法保存生成的 PDF 文件。
下方的代碼示例展示了怎樣在 Python 中添加頁腳,包含了文檔的頁數(shù)頁碼和圖片:
from spire.pdf.common import *
from spire.pdf import *
# 創(chuàng)建 PdfDocument 對象
doc = PdfDocument()
# 加載 PDF 文件
doc.LoadFromFile("E:/Administrator/Python1/input/AI繪畫的利與弊-圖片版.pdf")
# 加載頁腳圖片
footerImage = PdfImage.FromFile("F:/備用圖片/banner.png")
# 設(shè)置字體,畫刷
font = PdfTrueTypeFont("宋體", 12.0, PdfFontStyle.Bold, True)
brush = PdfBrushes.get_White()
# 創(chuàng)建頁碼,總頁數(shù)字段域
pageNumberField = PdfPageNumberField()
pageCountField = PdfPageCountField()
# 創(chuàng)建組合字段域用于將頁碼和總頁數(shù)合成一個字符串繪制
compositeField = PdfCompositeField(font, brush, "第 {0} 頁,共 {1} 頁", [pageNumberField, pageCountField])
# 設(shè)置組合字段域要繪制的位置
pageSize = doc.Pages[0].Size
fontSize = font.MeasureString(compositeField.Text)
compositeField.Location = PointF((pageSize.Width - fontSize.Width) / 2, pageSize.Height - 45.0)
graphicsWidget = PdfGraphicsWidget(compositeField)
# 循環(huán)遍歷文檔中的每一頁
for i in range(doc.Pages.Count):
# 獲取指定頁面
page = doc.Pages[i]
# 在指定位置繪制頁腳圖片
page.Canvas.DrawImage(footerImage, 55.0, pageSize.Height - 65.0, pageSize.Width - 110.0, 50.0)
# 在指定位置繪制頁碼組合字段
graphicsWidget.Draw(page.Canvas)
# 保存文件
doc.SaveToFile("E:/Administrator/Python1/output/添加頁腳.pdf")
# 釋放文檔對象
doc.Dispose()
這是使用 Spire.PDF 添加頁碼后的 PDF 示意圖:

總結(jié)
通過以上步驟,我們可以輕松地在 PDF 文檔中添加頁眉和頁腳,無論是公司 logo、標(biāo)題、頁碼,還是日期和版權(quán)信息,都能實現(xiàn)高度自定義。借助 Spire.PDF 的繪圖功能,你不僅能精確控制元素位置和樣式,還能保持整份文檔的排版一致性與專業(yè)外觀。掌握這些方法后,你就能讓生成的 PDF 更具結(jié)構(gòu)化與品牌感,為報告、合同或技術(shù)文檔增添專業(yè)水準(zhǔn)。
到此這篇關(guān)于Python輕松實現(xiàn)在PDF中插入頁眉頁腳的文章就介紹到這了,更多相關(guān)Python PDF插入頁眉頁腳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何使用python實現(xiàn)模擬鼠標(biāo)點擊
這篇文章主要介紹了如何使用python實現(xiàn)模擬鼠標(biāo)點擊,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01
Window10上Tensorflow的安裝(CPU和GPU版本)
這篇文章主要介紹了Window10上Tensorflow的安裝(CPU和GPU版本),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
解決pytorch trainloader遇到的多進(jìn)程問題
這篇文章主要介紹了解決pytorch trainloader遇到的多進(jìn)程問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
python基礎(chǔ)pandas的drop()用法示例詳解
這篇文章主要介紹了python基礎(chǔ)pandas的drop()用法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04

