/尾页计数永远不会增加



我正在尝试使用代笔将一段文本添加到 2 页的 pdf 中。查看类似的问题(https://stackoverflow.com/a/9783516/1581629 和https://stackoverflow.com/a/12596669/1581629https://stackoverflow.com/a/18774237/1581629)我正在尝试使用/EndPage,我希望在堆栈上获得一个"页面计数器"并使用它来选择要修改的页面。

但是,当/EndPage(Postscript 语言参考的第 441 页)堆栈中的"原因"为 0 时,"计数器"也始终为 0。

MWE 可能是(使用 git 存储库中的 gs 9.23):

gs -o out.pdf -sDEVICE=pdfwrite a.ps in.pdf

其中 a.ps 是:

<<
    /EndPage
    {
        (-----------------STARTn) print
        stack
        true
        (------------------ENDn) print
    }
>> setpagedevice

in.pdf是用pdflatex(Texlive 2017)制作的:

documentclass{article}
begin{document}
aaa
newpage
bbb
end{document}

谁能指出我在这里错过了什么?

Ghostscript PDF解释器在PDF文件每一页的开头执行setpagedevice。

这样做是因为PDF文件中的每个页面都可以有不同的MediaBox,因此它提取MediaBox并构造一个字典,其中包含包含MediaBox的PageSize条目,以便设置(可能)新的媒体大小。

setpagedevice 的每次执行都会重置页数,因此每个页面实际上是第一页。

如果需要页数,则可以创建专用词典,将计数器初始化为 0,然后在 EndPage 过程中打开字典测试当前计数值(并选择性地递增它)。

最新更新