Как сделать постраничные изменения в документе PDF с помощью Ghostscript? - PullRequest
0 голосов
/ 04 декабря 2018

Некоторое время назад я обнаружил, что вы можете использовать postscript для внесения изменений в pdf документы с помощью Ghostscript.Доступные примеры вносят одинаковые изменения в каждую страницу:

gs \
-sDEVICE=pdfwrite \
-o /path/to/output/pdf-shifted-by-1-inch-to-left.pdf \
-dPDFSETTINGS=/prepress \
-c "<</PageOffset [-72 0]>> setpagedevice" \
-f /path/to/input/pdf-original.pdf

Источник: Как сместить изображения страниц в файлах PDF больше влево или вправо?

См. Также: Обрезка PDF с использованием Ghostscript 9.01

Но как я могу установить разные смещения для разных страниц, не разбивая pdf на отдельные файлы?Например, переместите некоторые страницы вправо, а некоторые влево.

Я знаю способ сделать это с помощью pdftex, но я надеялся избежать этой зависимости.

1 Ответ

0 голосов
/ 04 декабря 2018

Ну, в принципе, это вопрос PostScript, потому что интерпретатор PDF Ghostscript (в настоящее время) написан на PostScript, так что вы можете вносить изменения в графическое состояние PostScript, которые будут влиять на интерпретатор PDF, и использовать возможности языка PostScript для выполнения программных задач..

Чтобы делать разные вещи на каждой странице, вам нужно использовать процедуру BeginPage или EndPage.BeginPage вызывается в начале каждой страницы, перед интерпретацией программы, и EndPage вызывается, когда страница завершена (т. Е. При выполнении демонстрационной страницы).

Вам потребуется процедура BeginPage, чтобы изменитьнастройка страницы перед выполнением страницы.Это будет вызвано подсчетом количества переданных страниц, поэтому вы можете использовать его для принятия решения о том, что вы хотите сделать.

NB. Текущий интерпретатор PDF выполняет setpagedevice на каждой странице, потому чтокаждая страница PDF может быть разного размера.Это означает, что для достижения ваших целей потребуются некоторые эксперименты.

...