Извлечение части одной страницы PDF из Bash

Вопрос или проблема

Для того чтобы извлечь часть страницы PDF на машине с Gnu/Linux, я использую следующую команду:

gs -sDEVICE=pdfwrite -o out.pdf -g2300x2300 input.pdf

Опция -g...x... позволяет выбрать координаты на входном PDF. Итак, вот мой вопрос:

  1. Как сдвинуть координаты так, чтобы можно было выбрать любой прямоугольник на входном PDF?

и расширяя этот вопрос:

  1. Существует ли какой-нибудь графический интерфейс, который позволяет выбрать нужные координаты? (пока всё основано на методе проб и ошибок.)

Я не хочу извлекать целые страницы из входного PDF.

Выходной формат должен снова быть PDF. Я не ищу извлечение текста или изображений.

Похожий вопрос был задан на askubuntu.org, но ответы относятся только к извлечению целых страниц или диапазонов страниц. Я знаю, что могу сделать это с помощью pdftk.

Еще более конкретный вопрос, похожий на этот, был задан здесь ранее, но остался без ответа.

На Mac всё это совершенно просто: программа preview имеет функцию именно для этого. Как сделать снимок части одной страницы PDF в формате PDF?

Вы можете попробовать использовать pdfjam, который принимает параметры, такие как --trim '1cm 2cm 1cm 2cm' --clip true (и другие параметры пакета LaTeX ‘pdfpages’), “чтобы обрезать эти величины слева, снизу, справа и сверху соответственно от входных страниц”, как заявляет вывод ‘–help’ программы.

Я часто использую фрагменты документов, но не видел способа в GUI для прямого извлечения фрагментов PDF.

Тем не менее, точный выбор фрагмента можно сделать с помощью Okular или Spectacle и сохранить результат в формате png, что я знаю, вы сказали, что не хотите, но….. вы можете вернуться к pdf, если выполните это в каталоге, куда сохранили фрагменты

for i in *.png; do convert $i ${i%.*}.pdf; done

Вопрос, на который вы ссылались, относится не столько к простому ‘захвату части документа’, сколько к обратной инженерии кривых без наличия исходных точек/данных графика. Это другая тема по сравнению с вашим вопросом.

Ответ или решение

Вопрос о том, как извлечь часть страницы PDF с помощью Bash на системе Gnu/Linux, представляет интерес для многих пользователей, которые хотят манипулировать PDF-файлами без использования сложных графических программ. Давайте рассмотрим этот вопрос с технической стороны, применяя концепции TEA (Теория, Пример, Применение).

Теория

Ghostscript, упомянутый в вашем примере, — это мощный инструмент для обработки PDF и PostScript файлов. Параметр -sDEVICE=pdfwrite преобразует файл в PDF формат, а -o out.pdf указывает имя выходного файла. Ключевой момент здесь — параметр -gWxH, где W и H представляют ширину и высоту в пикселях. Эти координаты задают размер области, которая должна быть извлечена из исходного PDF-файла.

Однако, Ghostscript по умолчанию обрабатывает только первые WxH точки из левого верхнего угла страницы. Чтобы сдвинуть эту область в пределах страницы, необходимо использовать другие параметры, такие как -c и -dBATCH, которые позволяют управлять позицией окна.

Пример

Для извлечения части страницы с определенными смещениями можно добавить команды на языке PostScript в команду Ghostscript. Это достигается добавлением следующего скрипта в командную строку Ghostscript:

gs -sDEVICE=pdfwrite -o out.pdf -g2300x2300 -c "<</PageOffset [x y]>> setpagedevice" -f input.pdf

Здесь [x y] — это векторы, задающие смещение от левого нижнего угла страницы, где x — смещение по горизонтали, а y — по вертикали.

Применение

Если вы ищете способ более интуитивно выбрать участок страницы, возможно используются графические интерфейсы. Хотя Ghostscript в основном ориентирован на командную строку, существуют альтернативные методы:

Использование pdfjam

pdfjam — это более простой и интуитивно понятный инструмент, который позволяет обрезать страницы PDF. Используя параметры --trim 'X1 Y1 X2 Y2' --clip true, вы можете точно указать размеры и позиции области обрезки:

pdfjam input.pdf --outfile out.pdf --trim '1cm 2cm 1cm 2cm' --clip true

Здесь X1, Y1, X2, Y2 представляют величины обрезки соответственно слева, снизу, справа и сверху от исходного документа. Это аналогично функции в LaTeX pdfpages, на которой основан pdfjam.

Графические интерфейсы

К сожалению, в Linux не так много графических инструментов для непосредственного выделения и извлечения фрагментов PDF в формате PDF без промежуточного преобразования в изображение. Однако, вы можете воспользоваться программами, такими как Okular или Spectacle, чтобы сначала сохранить нужный фрагмент в формате PNG, а затем конвертировать его обратно в PDF с помощью ImageMagick:

for i in *.png; do convert $i ${i%.*}.pdf; done

Заключение

Хотя Ghostscript и другие командные инструменты могут быть сложными в использовании, правильная их настройка позволяет точно выполнять задачи по выборке частей PDF. В отсутствие специализированного графического интерфейса, такие подходы остаются одними из наиболее эффективных на Linux. Надеюсь, это разъяснение поможет в вашей задаче по обработке PDF документов.

Оцените материал
Добавить комментарий

Капча загружается...