带有Adobe pdfmark的文本不可见,为什么?

时间:2018-10-25 16:41:31

标签: xml pdf header adobe ghostscript

我在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 

我喜欢在每个页面上添加页眉,或替换旧页面。

1 个答案:

答案 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。除了丢弃页码,您还可以使用它在不同的页面上执行不同的操作。