将两个a5页合并为一个a4页(不使用pdfnup)

时间:2010-11-03 12:30:27

标签: pdf-generation ghostscript dompdf pdftk

我正在使用Dompdf从html模板和Pdfnup(部分Pdfjam)生成A5 pdf文档,将它们组合成一张漂亮的单张A4纸,这有助于在打印时节省一些纸张:)

# 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 个答案:

答案 0 :(得分:5)

在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

答案 1 :(得分:3)

你可以结合使用Ghostscript和pdftk。

以下是:https://superuser.com/questions/191373/linux-based-tool-to-chop-pdfs-into-multiple-pages/192293#192293

以上链接的示例显示了如何将页面拆分为一半。只需相应地修改步骤,使用不同的参数...

  • ...首先将“左”页面移动到双尺寸画布,左半部分;
  • ...然后将“右”页面移动到双尺寸画布,右半部分;
  • ...最后,将页面与pdftk合并。

更新

提示:您想要使用pdftk的multistampmultibackground操作( NOT: )它的shuffle操作!)来获得想要的最终结果。

答案 2 :(得分:0)

基于Kurt-Pfeifle's answer,使用像shell这样的unix代码(我也保留了libreoffice的代码行):

[libprotobuf FATAL /home/filip/workbench/libs/pytorch/third_party/protobuf/src/google/protobuf/repeated_field.h:1522] CHECK failed: (index) < (current_size_): 
Traceback (most recent call last):
  File "main.py", line 62, in <module>
    SqueezenetRetrain(labels)
  File "/home/filip/workbench/git/MachineLearningScripts/caffe2/Methods.py", line 76, in SqueezenetRetrain
    workspace.CreateNet(squeezenetModel.net, overwrite=True)
  File "/usr/local/lib/python2.7/dist-packages/caffe2/python/workspace.py", line 171, in CreateNet
    StringifyProto(net), overwrite,
  File "/usr/local/lib/python2.7/dist-packages/caffe2/python/workspace.py", line 197, in CallWithExceptionIntercept
    return func(*args, **kwargs)
RuntimeError: CHECK failed: (index) < (current_size_): 

请注意,原始文档中嵌入的字体将在最终PDF中加倍。

此过程将生成镜像对齐,因此可以在中间切割打印的A4纸,并且两张A5页面的底部都将具有此切割边缘。