У меня есть pdf в альбомной ориентации и это "Разворот страницы".
Мне нужно разделить страницу пополам по вертикали посередине.
Я использовал эту настройку, чтобы разрезать pdf пополам: этот получает левую часть страницы
"C:\Program Files (x86)\gs\gs9.10\bin\gswin32c.exe" -o output.pdf
-sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dSubsetFonts=true -dEmbedAllFonts=true -g 750x1085 -c
"<</BeginPage{0.95 0.96 scale 20 22 translate}>> setpagedevice" "<</PageOffset [0 0]>> setpagedevice" -f input.pdf
Приведенная выше команда работает нормально. Теперь моя проблема заключается в том, что мне нужно установить Mediabox, Cropbox, Bleedbox, Trimbox и Artbox, аналогичные размеру разделенной страницы. В приведенном выше примере; должно быть 750х1085.
Какой должна быть правильная команда/настройки для запуска на GS, чтобы Mediabox, Cropbox, Bleedbox, Trimbox и artbox имели одинаковые размеры?
ОБНОВЛЕНИЕ
Это образец PDF-файла, который я пытаюсь разрезать пополам: ФАЙЛ PDF ДЛЯ РАЗДЕЛЕНИЯ
Сейчас я использую /PAGE pdfmark, и это команда, которую я пытаюсь использовать:
"C:\Program Files (x86)\gs\gs9.10\bin\gswin32c.exe" -o output.pdf -sDEVICE=pdfwrite -dNOPAUSE -dBATCH
-dSAFER -dUseCropbox -dSubsetFonts=true -dEmbedAllFonts=true -g7500x10850
-c "[/CropBox [0 0 750 1085] /PAGES pdfmark"
"[/MediaBox [0 0 750 1085] /PAGES pdfmark"
"[/TrimBox [0 0 750 1085] /PAGES pdfmark"
"[/BleedBox [0 0 750 1085] /PAGES pdfmark"
"[/ArtBox [0 0 750 1085] /PAGES pdfmark"
"<</BeginPage{0.95 0.96 scale 20 22 translate}>> setpagedevice"
"<</PageOffset [0 0]>> setpagedevice"
-f input.pdf
Я до сих пор не могу добиться одинакового размера Cropbox, MediaBox, TrimBox, BleedBox, ArtBox.
Какими должны быть правильные настройки команды?
Ответ 1 · KenS
Переходя к ответу здесь, комментарии слишком малы.
Ваша основная проблема заключается в том, что исходный файл PDF уже содержит все параметры Box, которые вы пытаетесь изменить. Интерпретатор Ghostscript PDF для определенных классов устройств вывода сохранит эти поля, записав на устройство собственную версию метки pdfmark. Поскольку это происходит после вашего pdfmark, он заменяет ваш.
К сожалению, нет никакого механизма, чтобы отключить это. Кроме того, поскольку вы используете Windows, у вас есть ресурсы, встроенные в файловую систему ПЗУ, поэтому вы не можете легко изменить их.
Так что на данный момент вы ничего не можете с этим поделать. Если вам удобно загружать исходный код и вмешиваться в PostScript, дайте мне знать, и я думаю, что смогу дать вам решение (вам не нужно пересобирать GS, но ресурсы PostScript недоступны отдельно).
РЕДАКТИРОВАТЬ, чтобы включить некоторые предлагаемые обходные пути
В pdf_main.ps:
% Test whether the current output device handles pdfmark.
/.writepdfmarkdict 1 dict dup /pdfmark //null put readonly def
/.writepdfmarks { % - .writepdfmarks <bool>
currentdevice //.writepdfmarkdict .getdeviceparams
mark eq { //false } { pop pop //true } ifelse
systemdict /DOPDFMARKS known or
} bind def
Вы можете изменить /.writepdmarks так:
/.writepdfmarks { % - .writepdfmarks <bool>
false
} bind def
Но обратите внимание, что ряд других вещей перестанет выводиться в выходной файл PDF.
Вместо этого вы можете посмотреть код в pdf_showpage_finish:
/pdfshowpage_finish { % <pagedict> pdfshowpage_finish -
save /PDFSave exch store
...
...
.writepdfmarks {
% Copy the boxes.
{ /CropBox /BleedBox /TrimBox /ArtBox } {
2 copy pget {
% .pdfshowpage_Install transforms the user space do same here with the boxes
oforce_elems
2 { Page pdf_cached_PDF2PS_matrix transform 4 2 roll } repeat
normrect_elems 4 index 5 1 roll fix_empty_rect_elems 4 array astore
mark 3 1 roll {/PAGE pdfmark} stopped {cleartomark} if
} {
pop
} ifelse
} forall
Вы можете изменить строку '{ /CropBox /BleedBox /TrimBox /ArtBox }', любые поля, которые вы не хотите сохранять, вы можете удалить из этой строки.
Если вы хотите, чтобы любая из них не переопределяла ваши спецификации, удалите строки с "% Копировать поля" до "% Копировать аннотации и ссылки".
Обратите внимание, что это только работает в системе, где ресурсы не встроены в файловую систему ПЗУ или где ресурсы, по крайней мере, доступны на диске, а путь к файлам ресурсов указан с помощью - Я переключаюсь.