Если для ввода используется PostScript, вы можете использовать номер, который ваша программа извлекает из стека, потому что это количество выполненных к настоящему времени страниц.
Если вы посмотрите на определение EndPage в PLRM (page427 в 3-м издании), вы увидите, что стек операндов содержит два числа, код причины сверху и количество предыдущих выполнений демонстрационной страницы.Вы должны сначала проверить код причины.Если его 2, высчитайте количество и верните false.Если это не 2, то проверьте второе число, чтобы увидеть, если это значение, которое вызовет вашу страницу.Если это не так, верните true.Если это так, то сначала выполните процедуру разметки и затем верните true.
Примечание: мне кажется, ваша программа оставляет количество выполнений showpage в стеке операндов, когда код причины равен 2. Это плохопрактика;если вызывается достаточно часто, вы можете вызвать ошибку переполнения стека.Также допустимо, чтобы программа оставляла операнды в стеке во время показа страницы и использовала их после.Если вы оставите что-то в стеке, это будет означать, что программа извлекает неправильные объекты.
К сожалению, когда ввод PDF, интерпретатор Ghostscript PDF выполняет setpagedevice на каждой странице, и это сбрасывает счетчик до 0.
Поэтому, когда входной файл представляет собой PDF, вам нужно изменить свою программу, чтобы сохранить количество страниц, с которыми она столкнулась, чтобы вы могли проверить ее и активировать только при необходимости.Дайте ему уникальное имя и сохраните его в userdict, увеличивайте его при каждом выполнении EndPage и запускайте маркирующую часть программы только тогда, когда она достигает определенного значения.
PostScript равен aязык программирования ......