我怎样才能添加一个脚注到Linux的后记或pdf文件的每个页面的底部?

所以我想添加一个“footer”(归属)到我通过postscript与groff在linux中生成的pdf文件的每一页的底部。 我正在使用ps2pdf工具将文件从ps转换为pdf,因此我可以访问这两种格式。

这两个post有些帮助:

如何将页码添加到Postscript / PDF中

我怎样才能让一个程序覆盖文本在postscript文件上?

我并不反对使用第一种方法,但是我没有权限访问第一个脚本中提到的pdflatex实用程序,也没有select将其安装在需要执行工作的机器上。

它看起来像第二种方法可能工作,但我已经安装了ghostscript 8.15版本,我没有看到手册页上列出的许多标志( http://unix.browserdebug.com/man/gs/ )。 我想我可以访问“-c”标志插入一些postscript代码,即使它没有列出。 无论如何,这里有两个我尝试失败的命令:

 gs -o output.pdf -sDEVICE = pdfwrite -g5030x5320 \
 -c“/ Helvetica-Italic findfont 15 scalefont setfont 453 482 moveto(test-string)show”\
 -f input.ps

这给了我这个:

未知开关-o  - 忽略
 ESP Ghostscript 815.02(2006-04-19)
 Copyright(C)2004 artofcode LLC,Benicia,CA. 版权所有。
此软件不附带任何担保:有关详细信息,请参阅PUBLIC文件。
错误:/(undefinedfilename)(output.pdf)
操作数堆栈:

执行堆栈:
    %interp_exit .runexec2 --nostringval  -   -  nostringval  -   -  nostringval  -  2%stopped_push --nostringval  -   -  nostringval  -  --nostringval  -  false 1%stopped_push
字典堆栈:
    (g) -   - 本案:0/20(G) -   - 本案:102/200(L) - 
当前分配模式是本地的
上次操作系统错误:2
 ESP Ghostscript 815.02:不可恢复的错误,退出代码1

所以显然-o标志有一个问题,所以我做了一些研究,并尝试了这个语法:


 gs -sOUTPUTFILE = output.pdf -sDEVICE = pdfwrite -g5030x5320 \
 -c“/ Helvetica-Italic findfont 15 scalefont setfont 453 482 moveto(test-string)show”\
 -f input.ps

它输出这个,并让我打回来4次(也许有4页input.ps)


 ESP Ghostscript 815.02(2006-04-19)
 Copyright(C)2004 artofcode LLC,Benicia,CA. 版权所有。
此软件不附带任何担保:有关详细信息,请参阅PUBLIC文件。
找不到(或不能打开)字体文件/usr/share/ghostscript/8.15/Resource/Font/Helvetica-Italic。
找不到(或不能打开)字体文件Helvetica-Italic。
查询操作系统的字体文件...
没有在系统上find这种字体!
将Helvetica-Oblique字体replace为Helvetica-Italic。
从/usr/share/fonts/default/Type1/n019023l.pfb载入NimbusSanL-ReguItal字体... 3742416 2168114 2083056 759694 1完成。
从/usr/share/fonts/default/Type1/n021023l.pfb载入NimbusRomNo9L-ReguItal字体... 3781760 2362033 2365632 1015713 1完成。
从/usr/share/fonts/default/Type1/n021004l.pfb加载NimbusRomNo9L-Medi字体... 3865136 2547267 2365632 1029818 1完成。
从/usr/share/fonts/default/Type1/n021003l.pfb加载NimbusRomNo9L-Regu字体... 4089592 2759001 2365632 1032885 1完成。
使用NimbusRomNo9L-Regu的NimbusRomanNo9L-Regu字体。
 >> showpage,按<return>继续<<

 >> showpage,按<return>继续<<

 >> showpage,按<return>继续<<

 >> showpage,按<return>继续<<


所以它似乎很简单,使用gs来简单地插入一个PS文件中的东西,但它被certificate是相当复杂的…

Solutions Collecting From Web of "我怎样才能添加一个脚注到Linux的后记或pdf文件的每个页面的底部?"

ESP Ghostscript是Oooo-old 。 除非你完全绝对不能避免它,否则不要再使用它。 这是CUPS使用的原始Ghostscript的一个分支。 (在解决了开发者之间的一些问题之后,更新版本的CUPS现在也再次使用GPL Ghostscript …)

较新的GPL Ghostscript版本在这里: http : //www.ghostscript.com/releases/

另外, -o out.pdf只是-dBATCH -dNOPAUSE -sOutputFile=outpdf 。 所以你应该试试这个。 ( -dNOPAUSE部分减轻了你对每个页面前进打击<return> …)。

最后,不要指望由第三方 man gs页面提供全面的文档。 而是参考您使用的版本的原始Ghostscript文档,最重要的部分是:

  • 当前开发分支 : Readme.htm + Use.htm + Ps2pdf.htm
  • 9.00发行版 : Readme.htm + Use.htm + Ps2pdf.htm
  • 8.71版本 : Readme.htm + Use.htm + Ps2pdf.htm

更新: Ghostscript已经转移到Git(而不是Subversion)的源代码库。 为此,下面的链接已经改变了,

  • 当前开发分支 : Readme.htm + Use.htm + Ps2pdf.htm
  • 当前开发分支 : Readme.htm + Use.htm + Ps2pdf.htm

在您的PostScript文件中,您可以使用页面计数器并重新定义showpage以将其显示在页脚中。 这是一个示例程序:

 4 dict begin /showpage_org /showpage load def % you'll need this later! /page_num 0 def /page_str 3 string def % Page numbers -99 to 999 supported, error if > 3 char /showpage % with page number footer { gsave /Courier findfont 10 scalefont setfont % Set the font for the footer /page_num page_num 1 add def % increment page number counter 10 10 moveto (Page ) show page_num page_str cvs show % convert page number integer to a string and show it grestore showpage_org % use the original showpage } def %Page 1 /Courier findfont 22 scalefont setfont 100 500 moveto (Hello) show showpage %Page 2 100 500 moveto (World) show showpage end 

添加页脚的最合理的地方是在groff源文件中。 确切的做法当然取决于你使用的宏包。 对于-ms ,你可以这样做:

 .ds RF "Page \\n(PN 

将页码添加为右页脚。 对于-mm ,更像是:

 .PF "'''Page \\\\nP'" 

单引号限定页脚的“左部”中间部分“右部”。