修改现有 PDF 以添加 "Page N of NNN" 页脚

Modify existing PDF to add "Page N of NNN" footer

如何从命令行(或最好从 Ruby)使用 pdftk 将页码添加到预先存在的 PDF 的底部?

我正在寻找这种格式:

如果您想在 pdftk 的帮助下完成此操作,您可以使用 multistampmultibackground 操作来完成。但首先您必须准备一份文件(使用您选择的软件),该文件会在空白页(PDF 格式)上创建 Page X of Y 页脚。

创建页脚

您可以使用 LibreOffice、OpenOffice、MS Winword 等任何您喜欢的工具来创建一个多页文件,其中包含空白页面内容,但页面已编号。只需确保您将获得 PDF 输出,并且您的页码正是您想要的。

我将在此处借助 Ghostscript 创建页脚。以下命令(可以很容易地放入 shell 脚本中,您可以相应地对其进行参数化,以便使用正确数量的 total)。这个使用 595x842 PostScript 点的页面大小(a.k.a.A4 大小)和 12 点大小的 Helvetica 字体:

total=100
gs -o 100pagenumbers.pdf    \
   -sDEVICE=pdfwrite        \
   -g5950x8420              \
   -c "/Helvetica findfont  \
       12 scalefont setfont \
       1 1  ${total} {      \
       /PageNo exch def     \
       450 20 moveto        \
       (Page ) show         \
       PageNo 3 string cvs  \
       show                 \
       ( of ${total}) show  \
       showpage             \
       } for"

这将创建一个 100 页的 PDF 文件,100pagenumbers.pdf

使用pdftk叠加页码

下一个命令使用 pdftkmultistamp 将页码文件叠加到原件上:

pdftk original.pdf              \
  multistamp 100pagenumbers.pdf \
  output pages-numbered.pdf