我需要将多个pdf文件合并为单页pdf 。我需要将生成的一些PDF拼接在一起。如果我水平缝合,则所有PDF的高度均相同,但宽度均不同。当我垂直拼接时,所有PDF的宽度相同,但高度不同。
我发现很多答案说要用pdfjam / pdfnup做到这一点。我尝试过,但似乎仅当要连接的每个项目都具有相同尺寸时,否则我只是无法使其正常工作。
我真的更愿意在ghostscript中执行此操作,因为其余的PDF操作已经在ghostscript中完成。我还没有找到解决方案。
作为一个例子,我缝在一起的物品看起来很像这样:
┌---------------------------------------┐
┬-┬----------------┬-┬----------------┬-┬
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
┴-┴----------------┴-┴----------------┴-┴
└---------------------------------------┘
我首先尝试将水平形成中间部分的5个框连接起来。然后,我需要将其与上方和下方的框一起加入。
答案 0 :(得分:1)
我的答案here包含一个PostScript程序,该程序只能仅与Ghostscript一起使用,并且仅适用于9.26以下的版本,但是具有强制性。
该程序会执行大量您不想要的工作,它假定您尝试将2个输入页面适合特定大小的介质,然后缩放并旋转页面以使其最适合。您将不想做任何事情。
基本上,您希望将当前点移动到每个页面的开头,绘制页面内容,然后将当前点移动到下一页的开始,绘制该页面的内容,依此类推。
广义上来说,这是
%%
%% First we open the PDF file
%%
File dup (r) file runpdfbegin pop
process_trailer_attrs
打开PDF文件,然后执行以下操作:
pdfgetpage %% get the page from the PDF file, stack: -save- -save- loop -dict-
dup /Page exch store %% save a copy of the page dict inside itself
pdfshowpage_init %% initialise the page
draw_page_content %% se above, draws the graphical objects, stack -save- -save- loop
绘制页面(pdfgetpage从0开始使用数字,以便页面从PDF文件中绘制。)
此:
PageXTx PageYTx translate %% Move to draw page 2
移动当前点。
这就是您需要的所有操作,将它们组合在一起由您决定。您将需要计算出最终最终“页面”的大小,并以设置为媒体大小的Ghostscript开头(使用-dDEVICEWIDTHPOINTS和-dDEVICEHEIGHTPOINTS),然后需要计算出每个页面在该页面上的位置“子页面”(请记住,原始位置在PDF的左下角)将移至该位置,绘制页面,并为每页重复。
最后,您需要执行:
showpage
以便刷新最终绘制的页面,然后理想地:
//runpdfend exec %% End the PDF file
因此,在当前的实现中,它可能是平凡的,但如您所见。再次让我指出,这不适用于大于9.26的Ghostscript版本。