Вопрос или проблема
Для того чтобы извлечь часть страницы PDF на машине с Gnu/Linux, я использую следующую команду:
gs -sDEVICE=pdfwrite -o out.pdf -g2300x2300 input.pdf
Опция -g...x...
позволяет выбрать координаты на входном PDF. Итак, вот мой вопрос:
- Как сдвинуть координаты так, чтобы можно было выбрать любой прямоугольник на входном PDF?
и расширяя этот вопрос:
- Существует ли какой-нибудь графический интерфейс, который позволяет выбрать нужные координаты? (пока всё основано на методе проб и ошибок.)
Я не хочу извлекать целые страницы из входного 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 документов.