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