Объединение двух страниц формата a5 в одну страницу формата a4 (без использования pdfnup) - PullRequest
7 голосов
/ 03 ноября 2010

Я использую Dompdf для создания PDF-документов формата A5 из HTML-шаблона и Pdfnup (часть Pdfjam), чтобы объединить их в один красивый лист А4, что помогает сэкономить немного бумаги при печати:)

# Generate an a5 pdf 
php dompdf.php mytemplate.html -p 'A5' -f a5doc.pdf

# combine two copies of the generated A5 into a single A4 page
pdfnup a5doc.pdf a5doc.pdf --nup '2x1' 

Это работает просто отлично; хотя второй шаг вынуждает меня установить огромное количество зависимостей (т. е. Tex-Latex, pdftex, ecc.) и загромождает мой рабочий сервер. Мне интересно, есть ли способ объединить сгенерированные документы без фактического использования Pdfnup. Например, есть ли способ сделать это с pdftk?

Заранее спасибо!

Ответы [ 3 ]

6 голосов
/ 08 декабря 2014

В Debian / Ubuntu мне удалось объединить 2xA5 с 1xA4 для печати с помощью простых команд:

# apt-get install ghostscript pdftk psutils 
pdftk A=A5-1.pdf B=A5-2.pdf cat A1 B1 output - \
| pdf2ps -dLanguageLevel=3 - - \
| psnup -2 -Pa5 -pa4 \
| ps2pdf -dCompatibility=1.4 - A4.pdf
3 голосов
/ 05 декабря 2010

Вы можете сделать это с помощью комбинации Ghostscript и pdftk.

Вот как: https://superuser.com/questions/191373/linux-based-tool-to-chop-pdfs-into-multiple-pages/192293#192293.

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

  • ... сначала переместить «левые» страницы в холст двойного размера, левая половина;
  • ... затем переместите «правильные» страницы на холст двойного размера, правую половину;
  • ... последний, объедините страницы с pdftk.

Обновление:

Подсказка: Вы хотите использовать одну из операций pdftk multistamp или multibackground ( NOT: ее shuffle операция!) чтобы получить желаемый конечный результат.

0 голосов
/ 28 января 2019

На основании ответа Курта-Пфайла код, использующий оболочку типа unix (я также сохранил строку для libreoffice):

FileBaseName="ExampleDoc_A5_Landscape"

# required packages: gs, pdftk, coreutils:mktemp

libreoffice --headless --nodefault --convert-to pdf "${FileBaseName}.odt"

temp_pdf_dir=$(mktemp -d)
a4_page1="${temp_pdf_dir}/1.pdf"
a4_page2="${temp_pdf_dir}/2.pdf"

pdftk "${FileBaseName}.pdf" cat 1south output - | gs -o "${a4_page1}" -sDEVICE=pdfwrite -sPAPERSIZE=a4 -dFIXEDMEDIA -dPDFFitPage -
pdftk "${a4_page1}" cat 1north output "${a4_page2}"
pdftk "${a4_page1}" background "${a4_page2}" output "${FileBaseName}-A4.pdf"
rm -rf "${temp_pdf_dir}"

Обратите внимание, что шрифты, встроенные в исходный документ, будут удвоены в окончательном PDF.

Эта процедура создает зеркальное выравнивание, поэтому напечатанная бумага формата А4 может быть обрезана посередине, и на обеих страницах формата А5 этот обрезанный край будет в нижней части.

...