所以我想在pdf文件的每一页的底部添加一个“页脚”(一个属性),我通过linux中的groff通过postscript生成。我正在使用ps2pdf工具将文件从ps转换为pdf,因此我可以访问这两种格式。
这两篇帖子有点帮助:
How to add page numbers to Postscript/PDF
How can I make a program overlay text on a postscript file?
我不反对使用第一种方法,但我无法访问第一个脚本中提到的pdflatex
实用程序,也无法在需要执行的机器上安装它工作。
看起来第二种方法可能会起作用,但我安装了版本8.15的ghostscript,我没有看到手册页(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
给了我这个:
Unknown switch -o - ignoring ESP Ghostscript 815.02 (2006-04-19) Copyright (C) 2004 artofcode LLC, Benicia, CA. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. ERROR: /undefinedfilename in (output.pdf) Operand stack: Execution stack: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push Dictionary stack: --dict:1117/1686(ro)(G)-- --dict:0/20(G)-- --dict:102/200(L)-- Current allocation mode is local Last OS error: 2 ESP Ghostscript 815.02: Unrecoverable error, exit code 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次(也许在input.ps中有4页)
ESP Ghostscript 815.02 (2006-04-19) Copyright (C) 2004 artofcode LLC, Benicia, CA. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. Can't find (or can't open) font file /usr/share/ghostscript/8.15/Resource/Font/Helvetica-Italic. Can't find (or can't open) font file Helvetica-Italic. Querying operating system for font files... Didn't find this font on the system! Substituting font Helvetica-Oblique for Helvetica-Italic. Loading NimbusSanL-ReguItal font from /usr/share/fonts/default/Type1/n019023l.pfb... 3742416 2168114 2083056 759694 1 done. Loading NimbusRomNo9L-ReguItal font from /usr/share/fonts/default/Type1/n021023l.pfb... 3781760 2362033 2365632 1015713 1 done. Loading NimbusRomNo9L-Medi font from /usr/share/fonts/default/Type1/n021004l.pfb... 3865136 2547267 2365632 1029818 1 done. Loading NimbusRomNo9L-Regu font from /usr/share/fonts/default/Type1/n021003l.pfb... 4089592 2759001 2365632 1032885 1 done. Using NimbusRomanNo9L-Regu font for NimbusRomNo9L-Regu. >>showpage, press <return> to continue<< >>showpage, press <return> to continue<< >>showpage, press <return> to continue<< >>showpage, press <return> to continue<<
因此,使用gs
简单地在ps文件中插入内容似乎很简单,但事实证明它非常复杂......
答案 0 :(得分:6)
在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
答案 1 :(得分:5)
ESP Ghostscript O-o-o-o-old 。不要再使用它,除非绝对,绝对无法避免。它是原始Ghostscript的一个分支,CUPS使用了一段时间。 (并且在解决了开发人员之间的一些问题后,更新版本的CUPS现在也再次使用GPL Ghostscript ......)
较新的GPL Ghostscript版本在此处:http://www.ghostscript.com/releases/
此外,-o out.pdf
只是-dBATCH -dNOPAUSE -sOutputFile=outpdf
的简写。所以你应该试试这个。 (-dNOPAUSE
部分可以让您无法按每个页面提前点击<return>
。)。
最后,不要指望第三方 man gs
页面提供全部文档。而是参考您使用的版本的原始Ghostscript文档,最重要的部分是:
更新:Ghostscript已将其源代码存储库移至Git(而非Subversion)。因此,以下链接反复更改:
答案 2 :(得分:1)
添加页脚的最合理位置是groff
来源。这样做的确切方法当然取决于您使用的宏包。对于-ms
,您可以执行以下操作:
.ds RF "Page \\n(PN
将页码添加为右页脚。对于-mm
,它更像是:
.PF "'''Page \\\\nP'"
其中单引号分隔页脚的“左侧部分'中间部分'右侧部分'。