/EndPage 计数永远不会增加
/EndPage count never increases
我正在尝试使用 ghostscript 将一段文本添加到 2 页的 pdf 中。
查看类似的问题( 和
) 我正在尝试使用 /EndPage,我希望在堆栈上得到一个 "page counter" 并用它来选择要修改的页面。
但是,当/EndPage(Postscript语言参考的pg.441)的堆栈中的"reason"为0时,"counter"也始终为0。
MWE 可能是(使用 git 存储库中的 gs 9.23):
gs -o out.pdf -sDEVICE=pdfwrite a.ps in.pdf
其中 a.ps 是:
<<
/EndPage
{
(-----------------START\n) print
stack
true
(------------------END\n) 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 过程中打开字典测试当前计数值(并可选地增加它)。
我正在尝试使用 ghostscript 将一段文本添加到 2 页的 pdf 中。 查看类似的问题( 和 ) 我正在尝试使用 /EndPage,我希望在堆栈上得到一个 "page counter" 并用它来选择要修改的页面。
但是,当/EndPage(Postscript语言参考的pg.441)的堆栈中的"reason"为0时,"counter"也始终为0。
MWE 可能是(使用 git 存储库中的 gs 9.23):
gs -o out.pdf -sDEVICE=pdfwrite a.ps in.pdf
其中 a.ps 是:
<<
/EndPage
{
(-----------------START\n) print
stack
true
(------------------END\n) 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 过程中打开字典测试当前计数值(并可选地增加它)。