PDF 添加页码

自定义位置/字体/起始页

420 次访问
PDF PAGE NUMBER

PDF 添加页码

自定义位置 / 字体 / 起始数字 / 格式(1, 1/N, 第 1 页)

📑
点击 / 拖拽 PDF

关于本工具

了解工具定位 · 使用场景 · 对比优势

为 PDF 文档批量添加页码,支持自定义页码位置(页眉/页脚/左右)、字体样式(字号/颜色/加粗)以及起始页码编号。需要整理合同、标书、论文或电子书排版的设计师、行政和学术用户,无需逐页手动插入。文件上传后由服务端处理,处理完成即自动删除。

使用场景

📄

合同页码整理

法务或行政人员处理多份合同扫描件时,每份合同需独立从第 1 页开始编号。本工具可设置每份 PDF 的起始页码,并统一选择底部居中、宋体 10pt 的页码样式,避免多份合同合并后页码混乱,提升归档与检索效率。

🎓

论文页码规范

研究生提交毕业论文时,封面、摘要、目录通常不编页码,正文需从第 1 页开始。本工具支持自定义起始页(如从第 3 页开始编号),并选择 Times New Roman 字体、底部居中,一键生成符合学校模板要求的页码,省去手动调整的重复劳动。

📊

标书页码重排

投标负责人拿到多个部门提交的 PDF 分册,每册页码独立。本工具允许为每册 PDF 分别设置起始页码(如第一册 1-50,第二册 51-100),并统一字体为黑体、位置为右下角,保证整套标书页码连续、风格一致,避免被评标专家扣分。

🏢

公司报告页码

财务或市场部门制作季度报告时,需在每页右上角标注“公司名 - 报告名称 - 页码”。本工具支持自定义页码前缀(如“ABC 公司 - 2024Q3 报告 - 第 X 页”),并调整字体大小与颜色,使报告在打印或分发时专业统一,无需手动逐页添加。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (Adobe Acrobat Pro)传统方法 (Word/打印)
数据隐私纯浏览器处理,文件不上传服务器需上传至 Adobe 云端处理(订阅版)或本地安装完全本地,不涉及网络传输
处理速度1-3 秒(取决于页面数)10-60 秒(含启动与上传时间)5-30 分钟(手动逐页添加)
离线可用需要网络加载,处理时无需持续连接桌面版可离线,网页版需在线完全离线
操作门槛打开网页,选择文件,点击生成需安装软件,学习菜单路径需掌握 Word/排版软件操作
自定义能力位置、字体、字号、起始页、边距位置、字体、样式、页码格式、多级编号位置、字体有限,依赖模板
批量处理支持多页 PDF 一次添加支持多页 PDF 一次添加逐页手动输入或复制粘贴
价格免费订阅制(约 ¥150/月)需拥有 Word/排版软件(可能已授权)

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 上传 PDF 文件,支持单文件或多文件批量处理,文件大小无限制
  2. 在「页码位置」下拉菜单中选择页眉、页脚或页面四角等预设位置
  3. 在「字体设置」区域选择字体样式、字号(8-72pt)及颜色
  4. 在「起始页码」输入框设置起始数字(默认 1),支持自定义偏移
  5. 点击「开始添加」按钮,后端处理完成后自动弹出下载链接

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
从第 1 页开始,页码格式为「第 1 页」,位置为页面底部居中,字体为宋体 12pt生成的 PDF 每页底部居中显示「第 1 页」「第 2 页」「第 3 页」……典型场景:通用文档页码,从首页开始
从第 3 页开始,页码格式为「- 1 -」,位置为页面底部右侧,字体为 Arial 10pt第 1、2 页无页码,第 3 页起显示「- 1 -」「- 2 -」「- 3 -」……典型场景:封面/目录页后开始编页
起始页码为 10,页码格式为「10」,位置为页面顶部居中,字体为 Times New Roman 14pt第 1 页显示「10」,第 2 页显示「11」,第 3 页显示「12」……边界 case:自定义起始页码非 1
从第 1 页开始,页码格式为「Page 1 of 5」,位置为页面底部居中,字体为 Helvetica 11pt每页底部居中显示「Page 1 of 5」「Page 2 of 5」……「Page 5 of 5」边界 case:包含总页数的页码格式
从第 1 页开始,页码格式为「第 1 页」,位置为页面顶部左侧,字体为 楷体 16pt每页顶部左侧显示「第 1 页」「第 2 页」「第 3 页」……边界 case:自定义字体和位置组合
PDF 文件共 200 页,从第 1 页开始,页码格式为「1」,位置为页面底部居中,字体为默认 12pt每页底部居中显示「1」「2」「3」……「200」易错 case:大文件页码,确保性能正常
PDF 文件为扫描件(无文字层),从第 1 页开始,页码格式为「第 1 页」,位置为页面底部居中,字体为黑体 12pt每页底部居中显示「第 1 页」「第 2 页」「第 3 页」……易错 case:扫描件仍可添加页码,不影响

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 起始页码从 0 开始

错误
起始页码:0
修复
起始页码:1

PDF 页码系统从 1 开始计数,与书籍页码习惯一致。输入 0 会导致第一页显示为 0,不符合阅读规范。

2. 页码位置与页面内容重叠

错误
位置:页面中央(X=50%, Y=50%)
修复
位置:页面底部居中(X=50%, Y=95%)或页面顶部右侧(X=90%, Y=5%)

页面中央区域通常被正文内容占据,页码放在此处会遮挡文字或图片,影响阅读。推荐放在页边距区域。

3. 自定义字体文件格式不支持

错误
上传字体:Arial.ttf(TrueType)
修复
上传字体:Arial.ttf(TrueType)或 Arial.otf(OpenType)

该工具后端基于 Go 的 PDF 库,仅支持 TrueType(.ttf)和 OpenType(.otf)字体。上传 .woff、.eot 等 Web 字体格式会报错。

4. 页码字体过小或过大

错误
字体大小:4pt
修复
字体大小:10pt-14pt

PDF 标准页面尺寸(A4)下,4pt 几乎不可读;超过 24pt 会显得突兀。建议根据页面尺寸调整,A4 推荐 10-14pt。

5. 多页 PDF 只检查第一页

错误
上传后只看第一页效果就下载
修复
先预览前 3-5 页确认页码位置和字体一致性

PDF 各页内容密度不同,第一页可能空白或只有标题,页码位置在其他页可能被内容遮挡。多页预览能避免批量错误。

6. 起始页码与文档逻辑页码混淆

错误
文档封面页编号为 1,正文从第 3 页开始编号为 1
修复
封面页编号为 1,正文从第 3 页开始编号为 1(起始页码设为 1,但实际物理页从第 3 页开始)

该工具按 PDF 物理页顺序添加页码,不支持跳过前 N 页不编号。如需封面无页码,需先用 PDF 分割工具拆出封面。

7. PDF 文件加密导致处理失败

错误
上传带打开密码的 PDF
修复
先使用 PDF 解密工具移除密码,再上传

该工具后端 Go 库无法解析加密 PDF。上传加密文件会直接返回错误,需提前解密。

8. 自定义颜色值格式错误

错误
颜色:#FF0000(十六进制)
修复
颜色:红色(预设颜色名)或 RGB 值(255,0,0)

该工具颜色输入框接受预设颜色名(如 red、blue)或 RGB 三元组(如 255,0,0),不支持 # 开头的十六进制格式。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

P_n = P_0 + (n - 1)

变量说明

  • P_n — 第 n 页的最终页码数字
  • P_0 — 用户设置的起始页码(如 1)
  • n — PDF 文档中的物理页序号(从 1 开始)

示例

用户设置起始页码为 5,PDF 共 10 页。则第 1 页显示 5,第 2 页显示 6,…,第 10 页显示 14。公式:P_1 = 5 + (1-1) = 5,P_10 = 5 + (10-1) = 14。

适用范围

适用于所有 PDF 文档,无页数或文件大小限制。不支持非连续页码(如跳过某页)或罗马数字格式,仅做线性递增。

原理图

上传 PDF选择文件设置页码参数位置 / 字体 / 起始页服务器处理Go 添加页码逐页解析 PDF在指定位置绘制页码下载结果带页码的新 PDF
用户输入 服务器处理 输出结果

开发者集成

3 种主流语言 · 复制即用

from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
from reportlab.lib.units import mm

# 为 PDF 每页添加页码(底部居中,起始页=1)
input_pdf = "input.pdf"
output_pdf = "output.pdf"

from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from io import BytesIO

reader = PdfReader(input_pdf)
writer = PdfWriter()

start_page = 1  # 起始页码
for i, page in enumerate(reader.pages):
    packet = BytesIO()
    c = canvas.Canvas(packet, pagesize=A4)
    c.setFont("Helvetica", 10)
    # 底部居中,距底边 20mm
    c.drawCentredString(A4[0]/2, 20*mm, str(start_page + i))
    c.save()
    packet.seek(0)
    overlay = PdfReader(packet)
    page.merge_page(overlay.pages[0])
    writer.add_page(page)

with open(output_pdf, "wb") as f:
    writer.write(f)
print(f"已添加页码,保存为 {output_pdf}")
package main

import (
	"fmt"
	"github.com/pdfcpu/pdfcpu/pkg/api"
	"github.com/pdfcpu/pdfcpu/pkg/pdfcpu"
	"os"
)

func main() {
	input := "input.pdf"
	output := "output.pdf"

	// 配置页码:底部居中,字体 Helvetica 10pt,起始页=1
	conf := pdfcpu.NewDefaultConfiguration()
	conf.Cmd = pdfcpu.ADDWATERMARK

	// 页码水印配置
	wm, err := pdfcpu.ParseTextWatermark("{{.PageNo}}", "pos:bc, font:Helvetica, size:10, scale:1, abs")
	if err != nil {
		fmt.Fprintf(os.Stderr, "解析水印失败: %v\n", err)
		os.Exit(1)
	}
	wm.OnTopOfContent = false // 页码在内容下方(不遮挡正文)

	// 执行添加页码
	if err := api.AddWatermarksFile(input, output, []*pdfcpu.Watermark{wm}, conf, nil); err != nil {
		fmt.Fprintf(os.Stderr, "添加页码失败: %v\n", err)
		os.Exit(1)
	}
	fmt.Printf("已添加页码,保存为 %s\n", output)
}
const { PDFDocument, StandardFonts, rgb } = require('pdf-lib');
const fs = require('fs');

async function addPageNumbers() {
  const pdfBytes = fs.readFileSync('input.pdf');
  const doc = await PDFDocument.load(pdfBytes);
  const font = await doc.embedFont(StandardFonts.Helvetica);
  const pages = doc.getPages();

  const startPage = 1;
  for (let i = 0; i < pages.length; i++) {
    const page = pages[i];
    const { width, height } = page.getSize();
    // 底部居中,距底边 20 点
    page.drawText(String(startPage + i), {
      x: width / 2 - 10,
      y: 20,
      size: 10,
      font: font,
      color: rgb(0, 0, 0),
    });
  }

  const pdfOut = await doc.save();
  fs.writeFileSync('output.pdf', pdfOut);
  console.log('已添加页码,保存为 output.pdf');
}

addPageNumbers().catch(console.error);

常见问题

8 个高频疑问

PDF 添加页码后,打印出来为什么页码位置对不上?
PDF 文件在创建时可能设置了不同的页面尺寸(如 A4、Letter)或存在出血线、裁剪框(TrimBox)。本工具默认将页码添加到页面介质框(MediaBox)的指定位置,如果文档实际内容区域(CropBox)小于介质框,页码可能出现在页面边缘或空白区域。建议在添加前先用 PDF 阅读器检查文档的页面尺寸是否统一。如果文档是扫描件或包含复杂裁剪标记,可以先运行一次“裁剪页面”工具统一内容区域后再添加页码。
为什么我设置了从第 3 页开始编号,但工具还是从第 1 页开始标?
“起始页”参数指的是页码数字的起始值,而非文档物理页面的起始位置。例如:文档共有 10 页,设置起始页为 3,则第 1 页显示“3”,第 2 页显示“4”,依此类推。如果希望跳过文档前几页不标页码(如封面、目录),需要先用“PDF 拆分”或“PDF 删除页面”工具将封面页分离,或在本工具中设置“跳过前 N 页”功能(如有)。当前工具逻辑是物理页面与页码一一对应,不支持“从第 X 页开始标但前几页不显示”。
添加页码后文件变大了很多,正常吗?
正常。PDF 添加页码本质是在页面内容流中嵌入新的文字对象,这会增加文件内部的数据量。对于原本是纯文本、压缩率较高的 PDF,增加幅度可能较明显(10%-30%);对于已包含大量图片或复杂元素的文档,增幅相对较小。如果文件大小增长超过 50%,可能是工具在保存时未对输出文件做二次压缩优化。本工具使用 Go 后端处理,输出时保持原始压缩策略,不会额外膨胀。如果对文件大小敏感,可在添加后使用“PDF 压缩”工具进一步优化。
上传的 PDF 是扫描件(图片版),添加的页码能正常显示吗?
可以。本工具在后端(Go)将页码作为独立的文字对象叠加在每一页的指定位置,不依赖 PDF 中是否包含可提取的文本层。即使是纯图片扫描件,页码也会以文字形式叠加在图片之上。但需要注意:如果扫描件页面本身带有白色边距,页码可能叠加在边距上而非图片内容上;如果扫描件页面尺寸不一致(例如 A4 和 A3 混合),页码位置在不同页面上会偏移。建议先将扫描件转为统一页面尺寸的 PDF 后再添加页码。
我想在页码前面加“第”和“页”,比如“第 1 页”,怎么设置?
工具的“前缀”和“后缀”字段支持自定义文字。在“前缀”输入框填入“第”,在“后缀”输入框填入“页”,页码显示效果即为“第 1 页”。支持中英文、数字、符号混合。注意:前缀/后缀内容会直接拼接在页码数字前后,不会自动添加空格。如果希望有间距,可以在前缀后加一个空格,如“第 ”(注意“第”后面有一个空格)。另外,如果文档本身包含特殊字符(如 /、\),建议先用纯文本测试一页确认显示效果。
同一个 PDF 文件,用这个工具和用 Adobe Acrobat 添加页码,效果一样吗?
核心效果一致:都是在指定位置插入页码数字。但存在以下差异:① 字体兼容性:Adobe Acrobat 使用系统字体,本工具使用内置的 Noto Sans CJK 字体,对中文、英文、数字的显示效果有保障,但不支持自定义字体文件上传。② 定位精度:Adobe 支持毫米级精确偏移,本工具使用预定义的 9 个位置模板(左上、中上、右上、左中、居中、右中、左下、中下、右下),不支持任意坐标。③ 输出方式:Adobe 会重新编码整个 PDF,本工具在原始 PDF 上增量添加,速度更快但文件结构更简单。
添加页码时工具报错“文件解析失败”,怎么办?
这个错误通常意味着 PDF 文件结构损坏、加密(有打开密码)或使用了非标准的 PDF 生成器(如某些在线 WPS 转换工具)。解决方法:① 确认文件没有打开密码——本工具不支持加密 PDF,需要先解密。② 用 Adobe Acrobat 或 Chrome 浏览器打开该 PDF,另存为“优化 PDF”或重新打印为 PDF,再上传。③ 检查文件是否完整:在线下载的 PDF 可能因网络中断而截断,重新下载一次。④ 如果文件是图片转成的 PDF,尝试用专业工具(如 PDF24)先修复一次。
我电脑里的 PDF 是竖版的,但添加的页码自动旋转了,为什么?
PDF 页面本身包含“旋转”元数据(例如扫描时手机竖拍但旋转了 90 度),页码对象会跟随页面的旋转属性叠加。如果页面旋转了 90 度或 270 度,原本定位在“右下角”的页码可能会实际出现在右侧中间位置。解决方法:在上传前,先用 PDF 阅读器查看文档属性中的“页面旋转”信息,或使用“PDF 旋转”工具将页面统一旋转到正常方向后再添加页码。本工具不会修改页面的旋转属性,仅按原始方向叠加页码。
选择 打开 +新窗口 esc关闭