Я хочу (вручную) вставить дополнительные команды postscript в файл postscript, который был преобразован из файла PDF с помощью файла ghostscript pdf2ps
. В целях тестирования я создал файл PDF из следующего файла, используя pdflatex
:
\documentclass[a4paper]{article}
\begin{document}
Mostly empty.
\end{document}
В преобразованном файле постскриптума я делаю следующее редактирование:
...
%%Page: 1 1
%%PageBoundingBox: 0 0 595 841
%%BeginPageSetup
4 0 obj
<</Type/Page/MediaBox [0 0 595.28 841.89]
/Parent 3 0 R
/Resources<</ProcSet[/PDF]
/Font 8 0 R
>>
/Contents 5 0 R
>>
endobj
%%EndPageSetup
% BEGIN MANUAL EDIT
0 setgray 0 0 moveto 595 841 lineto stroke
% END MANUAL EDIT
5 0 obj
<</Length 257>>stream
q 0.1 0 0 0.1 0 0 cm
0 G
0 g
q
10 0 0 10 0 0 cm BT
/R6 9.9626 Tf
1 0 0 1 139.746 706.129 Tm
[(M)-0.699638(os)-0.399443(t)-0.900585(l)-0.798886(y)-333.819(e)-0.400668(m)-0.300195(p)-0.599165(t)26.0974(y)83.192(.)-0.800112]TJ
154.421 -615.691 Td
(1)Tj
ET
Q
Q
endstream
endobj
pagesave restore
%%PageTrailer
%%Trailer
end
%%EOF
Вместо создания диагональной линии файл postcipt/PDF остается (по-видимому) неизменным. Однако, если я изменяю размеры страницы с A4 на размер Letter, отображается строка:
%%Page: 1 1
%%PageBoundingBox: 0 0 612 792
%%BeginPageSetup
4 0 obj
<</Type/Page/MediaBox [0 0 612 792]
...
Я явно что-то здесь упускаю (что неудивительно, учитывая мои элементарные знания постскриптума). Мой вопрос: как я могу сделать так, чтобы линия отображалась, сохраняя при этом размеры страницы неизменными?
P.S.: В комментарии, на который я наткнулся, упоминалось, что pdftops
(от poppler-utils) в каком-то смысле превосходит pdf2ps
. Действительно, вставка команд в преобразованный файл постскриптума непосредственно перед командой showpage
(которой при использовании pdf2ps
вообще нет) работала нормально. Так что, наверное, я уже нашел решение своей проблемы. Однако я хотел бы узнать, какое отношение к этому имеют размеры страницы при использовании pdf2ps
.
Решение
Благодаря совету KenS и ссылке на его ответ на этот вопрос Я смог добиться желаемого эффекта, добавив процедуру EndPage в файл postscript:
<<
/EndPage
{
exch pop 2 lt
{
gsave
0 0 translate
0 setgray 0 0 moveto 596 842 lineto stroke
grestore
true
}{false} ifelse
} bind
>> setpagedevice
(Предполагается, что размер страницы равен a4.)