Объединить несколько PDF-файлов в один (расположенный в виде матрицы)

Объединить несколько PDF-файлов в один (расположенный в виде матрицы)

Имея набор PDF-файлов, скажем: in-01.pdf, in-02.pdf, in-03.pdf, ... я хотел бы объединить их все в один, образовав M x Nматрицу.

Команда montageпозволяет это сделать ( Mи Nдолжны быть целыми числами):

montage -mode concatenate -tile NxM in-*.pdf out.pdf

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

Полагаю, должен быть способ сделать это (например, LATEX позволяет вставлять изображение PDF в другой PDF без необходимости предварительного преобразования его в изображение).

Я ищу альтернативу командной строке, использующую бесплатные программные инструменты в системах GNU/Linux.

ПРИМЕЧАНИЕ: мы можем предположить, что все эти файлы PDF имеют одинаковые точные размеры (ширину и высоту). Это автоматически сгенерированные изображения PDF, обычно состоящие из графика (простые фигуры, линии и прямоугольники) и немного текста (заголовок, метки...).

решение1

Вы можете использовать служебную программу pdfnupизpdfjamлюкс.

pdfnup in.pdf --nup 3x3

должен вывести файлв-nup.pdfсо страницамив формате .pdfорганизованы в ряд страниц с матрицей 3x3 из исходного PDF-файла.

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

решение2

Макет, который вы пытаетесь здесь воспроизвести, называетсяN-вверх. Есть несколько способов сделать это. Как в комментарии xae, вы можете сделать это с помощью pdfjam. Смотрите мой комментарий там. Например:

pdfjam --suffix nup --nup 2x2 input.pdf

создаст 4-up, матрицу 2x2. В качестве альтернативы вы можете передать --landscapeопцию для ориентации матрицы как при просмотре с альбомной, а не портретной ориентации.

Вы также можете сделать это, пройдясь по постскриптуму

pdf2ps input.pdf input.ps
psnup -4 input.ps output.ps
ps2pdf output.ps output.pdf

где -4означает 4-up (2x2)

И если вы напрямую пытаетесь распечатать этот файл pdf на Linux, я думаю, что клиент CUPS включает версию спулера печати Berkley LPR ( lpr) с опцией N-up. Вы можете использовать опцию с

lpr -o number-up=4 input.pdf

или установить его по умолчанию

lpoptions -p QueueName -o number-up=4

Связанный контент