拥有一组 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
应该输出文件in-nup.pdf与页面在.pdf从原始 pdf 开始,以 3x3 矩阵排列在一系列页面中。
您应该将所有 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)
如果您直接尝试在 Linux 上打印此 pdf 文件,我认为 CUPS 客户端包含一个lpr
带有 N-up 选项的 Berkley LPR 打印后台处理程序 ( ) 版本。您可以使用该选项
lpr -o number-up=4 input.pdf
或将其设置为默认值
lpoptions -p QueueName -o number-up=4