текст с Adobe PDF не видно, почему? - PullRequest
0 голосов
/ 25 октября 2018

мой код в терминале 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 голосов
/ 26 октября 2018

Ваша проблема в том, что исходный файл был полностью обработан до обработки pdfmark.

Это означает, что при выводе pdfmark «текущей» страницы не существует, поэтомунет страницы для присоединения.

Оператор pdfmark предназначен для выполнения во время программы PostScript (это, в конце концов, оператор PostScript), вы не можете просто выполнить его в случайное времяи ожидайте, что это даст какой-либо полезный эффект.

В случае создания аннотации вам необходимо иметь страницу «текущая» при выполнении 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 на каждую страницу.Вместо того, чтобы отбрасывать номер страницы, вы можете использовать его для различных действий на разных страницах.

...