Объединение нескольких фрагментов PDF на одной странице - выравнивание по верху без полей
У меня есть несколько небольших фрагментов в виде файла PDF, в зависимости от ввода пользователя эти фрагменты должны быть объединены на одной странице.
pdfjam и / или pdfnup делают это, и работает. Однако макет по умолчанию соответствует документу pdfpages.
Вставленные логические страницы центрируются на листе бумаги по умолчанию.
Мне нужно было бы объединить отдельные PDF-файлы на одной странице, начиная сверху без пробела / поля между ними.
Моя текущая команда выглядит так:
pdfnup 1.pdf 1a.pdf 2.pdf 2a.pdf --nup 1x4 --no-landscape --outfile test.pdf
Другие решения, кроме pdfjam, будут в порядке.
3 ответа
ImageMagick - ужасная идея для PDF из-за растеризации, которая произойдет (без обид на другой ответ, который просто пытался быть полезным)
Гораздо лучший ответ можно найти в разделе Как объединить несколько файлов PDF на одной странице с помощью pdftk? а тл; др это:
pdfjam Page1.pdf Page2.pdf --nup 2x1 --landscape --outfile Page1+2.pdf
Вы можете использовать ImageMagick для этого. У него есть огромное количество вариантов, но если вы погрузитесь в него, вы увидите, что его легко подобрать. Проверьте обзор всех параметров командной строки здесь. Для вашего вопроса я использовал следующие опции:
- -compress jpeg: преобразовать фрагменты pdf в jpeg, прежде чем помещать их в новый документ. Я думаю, что вы также можете пропустить эту опцию, которая оставит PDF как PDF внутри нового документа (не проверено).
- -extent: сделать страницы формата A4 с разрешением 150 dpi. Проверьте размеры, необходимые для размера и разрешения бумаги. А4 при разрешении 150 точек на дюйм дает 1240x1753 пикселей.
- -resize: изменить размер изображений /pdf, чтобы они соответствовали границам формата A4 при 150 dpi. Вы можете оставить это, если вы не хотите, чтобы исходный PDF-файл был изменен. Используйте ту же геометрию, что и с -extent.
- -Gravity: с говорит вам, где на странице размещено ваше изображение. Северо-запад - верхний левый угол.
- -units и -density: установить провал (в данном случае я выбрал 150 dpi)
Обратите внимание, что порядок операций является релевантным (выполняется в порядке). Таким образом, -гравитация должна быть размещена до расширения. Или, как сказано в руководстве:
Если параметр -gravity возникает перед другим параметром или параметром, имеющим аргумент геометрии, который задает смещение, смещение обычно применяется к точке в пределах изображения, предложенной аргументом -gravity.
Итак, вся моя команда была: convert *.pdf -compress jpeg -resize 1240x1753 -gravity NorthWest -extent 1240x1753 -units PixelsPerInch -density 150x150 output.pdf
Я создал пустые страницы и добавил их, чтобы выровнять первые две страницы по верху в книжном режиме.
Предположим, ваш файл input.pdf состоит из двух страниц, каждая из которых-c showpage
добавьте пустой, и эти две команды сохранят выходной файл .pdf с выравниванием двух страниц по верхнему краю:
gs -q \
-o tempfile.pdf \
-dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dSAFER -r300 \
-dCompatibilityLevel="1.5" -dPDFSETTINGS="/printer" \
-dColorConversionStrategy=/LeaveColorUnchanged \
-dSubsetFonts=true -dEmbedAllFonts=true \
-dFIXEDMEDIA \
-f input.pdf -c showpage -c showpage
pdfjam -q tempfile.pdf --nup 2x2 \
--frame false --trim '-6mm -4mm -6mm -4mm' --clip \
--outfile output.pdf
Вы можете установить для кадра значение true и настроить обрезку (чтобы обрезать входные страницы слева, снизу, справа и сверху соответственно), чтобы выходные страницы были как можно ближе к границам страницы.