我在Windows终端中的代码:
gs -o out.pdf -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress in.pdf pdfmark.txt
我在pdfmark.txt中的文字
[/Subtype /FreeText
/Rect [ 0 135 500 535 ]
/Contents (tataaaaaaaaaaaaaaaaaaaaa)
/ANN pdfmark
我喜欢在每个页面上添加页眉,或替换旧页面。
答案 0 :(得分:0)
您的问题是在处理pdfmark之前,原始文件已被完全处理。
这意味着您在发出pdfmark时没有“当前”页面,因此没有页面可以附加到该页面。
pdfmark运算符旨在在PostScript程序的过程中执行(毕竟,它是PostScript运算符),您不能只是随机地执行它并期望它会产生任何有用的效果。 / p>
在创建注释的情况下,执行pdfmark时需要页面为“当前”。唯一可行的方法是创建BeginPage或EndPage过程,并在开始执行PDF文件之前进行设置。
在每个页面的开始和结束处都将调用BeginPage和EndPage过程,因此此时您仍然拥有当前页面。因为(此时)您处于PostScript环境中,并且拥有页面,所以您可以执行pdfmark注释,它将起作用。
例如:
<<
/EndPage {
%% Check that this is for a showpage, not copypage or deactivation
0 eq {
pop %% discard the page number
[/Subtype /FreeText
/Rect [0 135 500 535]
/Contents (Test)
/ANN pdfmark
true
}{
pop
false
}ifelse
}
>> setpagedevice
将在每个页面上放置pdfmark。除了丢弃页码,您还可以使用它在不同的页面上执行不同的操作。