Как обрезать раздел PDF-файла в PNG, используя Ghostscript

Мне нужно обрезать определенный раздел в моем PDF-файле в PNG (это будет автоматизировано с использованием Ghostscript с PHP). Это то, что я делаю сейчас, что в основном превращает первую страницу PDF в PNG:

gs -q -dNOPAUSE -dBATCH \ -sDEVICE=pngalpha -dEPSCrop \ -sOutputFile=output.png input.pdf 

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

Первый,
определить ограничительную рамку вашей первой страницы PDF:

 gs \ -q \ -dBATCH \ -dNOPAUSE \ -sDEVICE=bbox \ -dLastPage=1 \ stackoverflowQuestion.pdf \ 2>&1 \ | grep %%BoundingBox 

Результирующий результат будет:

 %%BoundingBox: 119 531 464 814 

Это значит:

  • нижний левый угол ограничительной рамки находится в координате (119,531)
  • верхний правый угол ограничительной рамки находится в координате (464,814)

Значения находятся в точках PostScript (где 72 pt == 1 inch ). Ограничивающая рамка – это прямоугольник, который включает в себя эти графические объекты PDF, которые оставляют чернила или тонерные метки на странице.

Затем,
создайте свой PNG.

Вывод из значения ограничивающей рамки, вам кажется, что он имеет ширину 345 pt ( = 464 - 119 ) и 283 pt high ( = 814 - 531 ). Это приводит к размеру страниц -g345x283 (задается в пикселях, поскольку Ghostscript использует по умолчанию 72 dpi для вывода изображения (если не указано иное), а для этого 72 px == 1 inch .

Или лучше, мы сохраняем зону безопасности на расстоянии 1 п. От ограничительной рамки, поэтому мы делаем изображение немного больше, чем минимальный минимум, и мы получаем это измерение изображения: -g347x285 .

Вам также необходимо отрезать 119 пт от левого края (118 пт для «безопасности») и 531 пт от нижнего края (530 для обеспечения безопасности).

Следовательно, команда будет:

 gs \ -o out.png \ -sDEVICE=pngalpha \ -g347x285 \ -dLastPage=1 \ -c "<</Install {-118 -530 translate}>> setpagedevice" \ -f stackoverflowQuestion.pdf 

Вот результат PNG:

out.png

Для лучшего качества PNG увеличьте разрешение по умолчанию от 72 dpi до 720 dpi и используйте эту команду:

 gs \ -o out720dpi.png \ -sDEVICE=pngalpha \ -r720 \ -g3470x2850 \ -dLastPage=1 \ -c "<</Install {-118 -530 translate}>> setpagedevice" \ -f stackoverflowQuestion.pdf 

Обновить:

В Windows в окне CMD имена консольных приложений для Ghostscript – gswin32c.exe и / или gswin64c.exe (вместо gs ). Кроме того, вы должны использовать ^ как символ продолжения строки (вместо \ ).

В Windows имена консольных приложений для Ghostscript – gswin32c.exe и / или gswin64c.exe (вместо gs ).

1. Окно CMD

В окне CMD вы должны использовать ^ как символ продолжения строки (вместо \ ). Кроме того, grep может быть недоступен – вместо этого используйте findstr . Наконец, если gswinXX.exe не находится в вашем %PATH% , и если полный путь содержит пробел, вы должны его процитировать:

 "c:\program files\ghostscript\gswin64c.exe" ^ -q ^ -dBATCH ^ -dNOPAUSE ^ -sDEVICE=bbox ^ -dLastPage=1 ^ stackoverflowQuestion.pdf ^ | findstr %%BoundingBox 

2. Окно PowerShell

В окне PowerShell просто не указывается полный путь к исполняемому файлу. Вам нужно запустить:

 & "c:\program files\ghostscript\gswin64c.exe" -q -o nul: -sDEVICE=bbox my.pdf