ОК, поэтому программа PostScript из этого ответа , я думаю, выполнит свою работу. Это работает так, что вы устанавливаете размер носителя Ghostscript таким, каким вы хотите, чтобы конечный вывод выглядел, а затем просто запускаете программу через Ghostscript, передавая GS имя файла PDF.
Программа получает текущий размер носителя, а затем пытается уместить страницы из PDF на этот носитель. Очевидно, у меня нет вашего тестового файла, но я полагаю, что если вы настроите GS на носитель 612x1584, а затем запустите его, то GS решит, что страницы лучше всего подойдут без масштабирования и без поворота. Если это не так, мне нужно увидеть пример, чтобы понять, почему.
Если вы скопируете программу из ответа и сохраните ее с именем 2-up.ps, использование в комментариях при запуске программы:
% usage: gs -dNODISPLAY -sFile=____.pdf [-dVerbose] 2-up.ps
Так что вам нужно что-то вроде:
gs -dNODISPLAY -dDEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=1584 -dFIXEDMEDIA -sDEVICE=pdfwrite -sOutputFile=out.pdf -sFile=<insert your full path and filename here> 2-up.ps
Это займет исходный файл PDF (определенный -sFile) и попытается создать его представление в 2 раза, записав вывод в новый файл PDF.
Обратите внимание на комментарии; он не пытается сохранить метаданные, такие как гиперссылки, потому что они основаны на страницах и будут неверными при перенумерации страниц) и будут работать только с текущим PDF-интерпретатором в Ghostscript. Он не будет работать с любым другим интерпретатором PostScript, потому что программа использует внутренние компоненты интерпретатора Ghostscript PDF, с которыми он не должен вмешиваться.
О, и программа предполагает, что все страницы в файле PDF имеют одинаковый размер, размер первой страницы.
Предполагается, что в будущем выпуске мы добавим (лучше) поддержку наложения в Ghostscript.