最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python代碼實現(xiàn)為PDF添加頁碼(附詳細教程)

 更新時間:2026年05月18日 11:44:49   作者:秋天的落葉鋪滿小路  
在處理合同、報告、論文、技術文檔等 PDF 時,給頁面添加頁碼幾乎是必備功能,本文將介紹如何使用 Spire.PDF for Python 這個強大的庫,通過簡單的代碼為 PDF 文件自動添加 中文頁碼 ,希望對大家有所幫助

在處理合同、報告、論文、技術文檔等 PDF 時,給頁面添加頁碼幾乎是必備功能。傳統(tǒng)的 PDF 生成/編輯往往依賴復雜的版式工具;而在 Python 里,借助 Spire.PDF for Python ,我們可以用相對簡單的代碼,把頁碼以居中、左對齊、右對齊等方式繪制到 PDF 頁腳區(qū)域。

本文將介紹如何使用 Spire.PDF for Python 這個強大的庫,通過簡單的代碼為 PDF 文件自動添加 中文頁碼 。我們會提供居中、左對齊、右對齊三種樣式的完整代碼,方便你根據(jù)實際需求靈活選擇。

一、準備工作

首先,安裝 Spire.PDF for Python 庫:

pip install spire.pdf

安裝完成后,在你的 Python 代碼中導入所需模塊:

from spire.pdf.common import *
from spire.pdf import *

二、核心概念解析

在開始編寫代碼之前,先了解一下這個庫中幾個關鍵類的作用:

類名作用
PdfDocument代表一個 PDF 文檔,用于加載、保存和操作文檔
PdfPageNumberField代表當前頁碼,會自動填入當前頁的頁碼
PdfPageCountField代表文檔總頁數(shù),會自動填入總頁數(shù)
PdfCompositeField將多個字段組合成一個格式化字符串
PdfTrueTypeFont創(chuàng)建 TrueType 字體,支持中文

簡單來說:PdfPageNumberField 和 PdfPageCountField 是“變量”,PdfCompositeField 負責將它們放入模板字符串中。

三、完整代碼示例(居中頁碼)

以下是為 PDF 添加居中對齊中文頁碼的完整代碼,注釋詳細,便于理解:

from spire.pdf.common import *
from spire.pdf import *
# 1. 創(chuàng)建 PdfDocument 對象并加載 PDF 文件
doc = PdfDocument()
doc.LoadFromFile("示例文檔.pdf")
# 2. 使用宋體字體,支持中文顯示
font = PdfTrueTypeFont("SimSun", 12.0, PdfFontStyle.Regular, True)
brush = PdfBrushes.get_Black()      # 黑色畫筆
pen = PdfPen(brush, 1.0)            # 用于畫分隔線的筆
# 3. 創(chuàng)建頁碼字段和總頁數(shù)字段
pageNumberField = PdfPageNumberField()
pageCountField = PdfPageCountField()
# 4. 組合成中文格式 "第 X 頁 / 共 Y 頁"
compositeField = PdfCompositeField(
    font, 
    brush, 
    "第 {0} 頁 / 共 {1} 頁",         # 中文頁碼模板
    [pageNumberField, pageCountField]
)
# 5. 設置頁邊距(單位:點,1點 = 1/72 英寸)
leftMargin = 54.0      # 左邊距約 0.75 英寸
rightMargin = 54.0     # 右邊距約 0.75 英寸
bottomMargin = 72.0    # 底邊距約 1 英寸
# 6. 遍歷所有頁面,為每一頁添加頁碼
for i in range(doc.Pages.Count):
    page = doc.Pages.get_Item(i)          # 獲取當前頁
    pageSize = page.Size                   # 獲取頁面尺寸
    # 6.1 繪制分隔線(可選,讓頁碼區(qū)域更美觀)
    lineY = pageSize.Height - bottomMargin + 15.0
    page.Canvas.DrawLine(
        pen, 
        leftMargin, 
        lineY, 
        pageSize.Width - rightMargin, 
        lineY
    )
    # 6.2 計算中文頁碼文本的寬度
    pageNumberSize = font.MeasureString(
        f"第 {i + 1} 頁 / 共 {doc.Pages.Count} 頁"
    )
    # 6.3 設置頁碼位置(居中)
    compositeField.Location = PointF(
        (pageSize.Width - pageNumberSize.Width) / 2,   # X 坐標:頁面中心
        pageSize.Height - bottomMargin + 18.0           # Y 坐標:頁腳位置
    )
    # 6.4 在頁面上繪制頁碼
    compositeField.Draw(page.Canvas, 0.0, 0.0)
# 7. 保存并釋放資源
doc.SaveToFile("中文頁碼.pdf")
doc.Dispose()

四、左對齊和右對齊的實現(xiàn)

只需修改 compositeField.Location 的 X 坐標即可切換對齊方式:

4.1 左對齊頁碼

# 左對齊:X 坐標 = 左邊距
compositeField.Location = PointF(
    leftMargin,                                    # 靠左
    pageSize.Height - bottomMargin + 18.0
)

效果示例:“第 1 頁 / 共 10 頁” 顯示在頁面左下角。

4.2 右對齊頁碼

# 右對齊:X 坐標 = 頁面寬度 - 文本寬度 - 右邊距
compositeField.Location = PointF(
    pageSize.Width - pageNumberSize.Width - rightMargin,   # 靠右
    pageSize.Height - bottomMargin + 18.0
)

效果示例:“第 1 頁 / 共 10 頁” 顯示在頁面右下角。

五、更多中文頁碼樣式

除了「第 X 頁 / 共 Y 頁」,你還可以根據(jù)喜好使用其他中文樣式:

5.1 簡潔版

compositeField = PdfCompositeField(
    font, brush, "{0} / {1}", 
    [pageNumberField, pageCountField]
)
# 顯示效果:1 / 10

5.2 帶裝飾線版

compositeField = PdfCompositeField(
    font, brush, "- {0} / {1} -", 
    [pageNumberField, pageCountField]
)
# 顯示效果:- 1 / 10 -

5.3 完整中文版(帶“第”和“共”)

compositeField = PdfCompositeField(
    font, brush, "第 {0} 頁(共 {1} 頁)", 
    [pageNumberField, pageCountField]
)
# 顯示效果:第 1 頁(共 10 頁)

5.4 純頁碼版(無總頁數(shù))

# 只需要頁碼,不需要總頁數(shù)
compositeField = PdfCompositeField(
    font, brush, "第 {0} 頁", 
    [pageNumberField]
)
# 顯示效果:第 1 頁

六、常用中文字體參考

字體名稱說明適用場景
SimSun宋體正式文檔、報告、論文
SimHei黑體標題、強調內容
Microsoft YaHei微軟雅黑屏顯閱讀、現(xiàn)代風格
KaiTi楷體文藝風格、書法類文檔
FangSong仿宋公文、正式函件
# 示例:使用微軟雅黑字體
font = PdfTrueTypeFont("Microsoft YaHei", 12.0, PdfFontStyle.Regular, True)

七、參數(shù)調優(yōu)指南

7.1 邊距調整

如果頁碼位置不理想,可以調整三個邊距值:

leftMargin = 54.0      # 增大 → 頁碼右移(左對齊時),或增加左右空白區(qū)
rightMargin = 54.0     # 增大 → 頁碼左移(右對齊時)
bottomMargin = 72.0    # 增大 → 頁碼上移,減小 → 頁碼下移

7.2 分隔線和頁碼的垂直位置微調

代碼中有兩個偏移量可以調整:

# 分隔線的垂直位置(當前為 bottomMargin 上方 15 點)
lineY = pageSize.Height - bottomMargin + 15.0

# 頁碼的垂直位置(當前為 bottomMargin 上方 18 點)
compositeField.Location = PointF(x, pageSize.Height - bottomMargin + 18.0)
  • 增大這兩個值 → 分隔線和頁碼向下移動
  • 減小這兩個值 → 分隔線和頁碼向上移動

7.3 字體大小調整

# 將 12 號字改為 14 號字
font = PdfTrueTypeFont("SimSun", 14.0, PdfFontStyle.Regular, True)

字體改變后,頁碼文本的尺寸會自動重新計算,位置會自適應。

八、常見問題與解決方案

Q1:中文顯示為亂碼怎么辦?
A:確保使用的是支持中文的字體,如 SimSun(宋體)、Microsoft YaHei(微軟雅黑)等,不要用 Times New Roman。

Q2:頁碼出現(xiàn)在頁眉而不是頁腳?

A:檢查 bottomMargin 和 Y 坐標的計算公式,Y 值越大越靠近頁面底部。

Q3:頁碼被頁面內容遮擋?

A:增大 bottomMargin 的值,為頁碼預留更多空間。

Q4:如何跳過封面頁不添加頁碼?

A:修改循環(huán)的起始索引,例如從第 2 頁開始:

for i in range(1, doc.Pages.Count):  # 從索引 1(第2頁)開始

Q5:只想給部分頁面添加頁碼?

A:在循環(huán)中添加條件判斷即可:

for i in range(doc.Pages.Count):
    if i >= 2 and i <= 10:  # 只給第3頁到第11頁添加頁碼
        # 添加頁碼的代碼

九、總結

通過 Spire.PDF for Python,我們只需要幾十行代碼就能為 PDF 批量添加中文頁碼,支持居中、左對齊、右對齊三種樣式。

核心步驟回顧:

  1. 加載 PDF 文檔
  2. 創(chuàng)建頁碼字段和總頁數(shù)字段
  3. 使用組合字段定義中文格式模板
  4. 遍歷每一頁,計算位置并繪制
  5. 保存結果

這個方法不僅效率高,而且可重復使用——無論文檔有多少頁,代碼都能完美處理。希望這篇文章對你有幫助,快去試試為你的 PDF 文檔添加專業(yè)的中文頁碼吧!

到此這篇關于Python代碼實現(xiàn)為PDF添加頁碼(附詳細教程)的文章就介紹到這了,更多相關Python PDF添加頁碼內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

儋州市| 安国市| 那曲县| 富民县| 陈巴尔虎旗| 景谷| 新津县| 阳朔县| 棋牌| 沅陵县| 中牟县| 库尔勒市| 乌兰察布市| 赤城县| 井研县| 那曲县| 鲁甸县| 肥乡县| 周宁县| 五大连池市| 岳阳市| 信阳市| 平湖市| 阿图什市| 射阳县| 张家川| 于田县| 图们市| 威海市| 巴东县| 交城县| 长兴县| 阳原县| 明星| 简阳市| 治县。| 五原县| 东辽县| 建始县| 类乌齐县| 开封县|