Как изменить ориентацию страницы PDF? (Требуется Ghostscript или PostScript) - PullRequest
18 голосов
/ 22 июня 2010

Учитывая документ PDF, как я могу изменить ориентацию отдельной страницы?

Я использую последнюю версию Ghostscript.

Ответы [ 2 ]

36 голосов
/ 24 июня 2010

Почему вы требуете использования Ghostscript? Будет ли приемлемым использовать другой инструмент с открытым исходным кодом, работающий в командной строке, например pdftk?

В любом случае, вот как вращать страницы с помощью Ghostscript. Однако это может не сработать для ваших намерений, поскольку вы не можете заставить определенную ориентацию только для отдельной страницы. Он опирается на внутренний алгоритм Ghostscript, который пытается автоматически поворачивать страницы в зависимости от потока текста внутри PDF-файлов:
* -dAutoRotatePages=/None - сохраняет ориентацию каждой страницы;
* -dAutoRotatePages=/All - поворачивает все страницы (или ни одной) в зависимости от вида «решения большинства»;
* -dAutoRotatePages=/PageByPage - автоматически поворачивает страницы по отдельности.

Добавьте один из них в командную строку Ghostscript, которую вы используете.

Если на странице есть текст нет (или если для автоматического поворота страницы установлено значение /None), то Ghostscript использует настройки setpagedevice. Вы можете передать такие параметры setpagedevice в командной строке Ghostscript, используя переключатель -c, например:
* -c "<</Orientation 3>> setpagedevice" - устанавливает альбомную ориентацию;
* -c "<</Orientation 0>> setpagedevice" - устанавливает портрет ориентация;
* -c "<</Orientation 2>> setpagedevice" - устанавливает вверх ногами ориентация;
* -c "<</Orientation 1>> setpagedevice" - устанавливает морской пейзаж ориентацию.

Возможно, вам нужно установить ориентацию для каждой страницы при извлечении страниц. Я не думаю, что это сработает при объединении их обратно в единый документ (я никогда не проверял это).

В любом случае, я бы порекомендовал взглянуть и на pdftk (который также доступен для Windows). Это инструмент командной строки, который может вращать страницы из PDF-файлов и многое другое. Проще в использовании, чем Ghostscript для вашей заявленной цели, и гораздо быстрее. В частности, он может вращать отдельные страницы в документе PDF, оставляя другие страницы нетронутыми. Пример:

pdftk A=in.pdf           \
  cat A1-3 A4west A5-end \
  output out.pdf

Эта команда выведет страницы 1, 2 и 3, а также страницы 5, 6, ... последние не повернутыми, но повернет страницу 4 на 90 градусов (поэтому заголовок страницы обращен к «западу»). (Однако учтите, что эта команда может привести к непредвиденным результатам в зависимости от исходной ориентации ваших входных страниц: необходимо проверить ориентацию всех страниц входного PDF, введя pdfinfo -l 1000 input.pdf, а затем проверьте значение вывода rot: если вы видите значения, отличные от 0, например 90, 180 и 270, эти страницы уже предварительно повернуты ...)

Подробнее см. Здесь: http://www.accesspdf.com/pdftk/.

0 голосов
/ 18 апреля 2019

Ничто, кроме -dNORANGEPAGESIZE, не сработало для меня идеально.

...