堆叠PDF图像:单页输出

时间:2018-06-28 16:16:23

标签: pdf ghostscript pdf-manipulation

如何将PDF图像(垂直)堆叠到单页输出PDF中?即:

|-----|
|  1  |
|  2  |
| ... |
|-----|

(请参见下面的示例。)我要寻找的是与this tool等效的PDF,该文件可以堆叠SVG图形。


请注意,这与多页组合明显不同

|-----|
|  1  |
|-----|
|  2  |
|-----|
| ... |
|-----|

使用哪个会获得

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf 1.pdf 2.pdf ...

(请参阅this answer。)


示例

@KenS在评论中完美地描述了我的目标:我选择第1页和第2页,两者均为612x792点,应该成为PDF,并且只有一个页面,其中包含顶部第1页的标记内容,在底部的第2页标记内容。如果该页面应为此页面,则尺寸为612x1584。

更直观:

enter image description here

1 个答案:

答案 0 :(得分:2)

好的,所以我认为answer中的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-up表示,并将输出写入新的PDF文件。

注意评论;这不会尝试保留超链接之类的元数据,因为这些超链接是基于页面的,并且在页面重新编号后将是错误的),并且仅适用于Ghostscript中的最新 PDF解释器。它不能与任何其他PostScript解释器一起使用,因为该程序使用了Ghostscript PDF解释器的内部结构,而该内部结构本来就不应该被它所干扰。

哦,程序假定PDF文件中的所有页面大小都相同,即第一页的大小。

我们应该在将来的版本中为Ghostscript中的拼版添加更多(更好)支持。