如何加入不同维度的多个pdf文件?

问题描述 投票:0回答:1

我需要将多个pdf文件加入到单页pdf中。我需要将我生成的一些PDF拼接在一起。如果我水平拼接,则所有PDF都具有相同的高度但宽度不同。当我垂直拼接时,所有PDF都是相同的宽度但不是相同的高度。

我发现很多答案都是用pdfjam / pdfnup做的。我试过了,但似乎只是当每个要加入的项目是相同的维度时,否则我只是无法让它正常工作。

我真的更喜欢在ghostscript中这样做,因为我的PDF操作的其余部分已经在ghostscript中完成了。我没有找到解决方案。

举个例子,我拼接在一起的物品看起来非常像这样:

┌---------------------------------------┐
┬-┬----------------┬-┬----------------┬-┬
| |                | |                | |
| |                | |                | |
| |                | |                | |
| |                | |                | |
| |                | |                | |
| |                | |                | |
| |                | |                | |
┴-┴----------------┴-┴----------------┴-┴
└---------------------------------------┘

我首先尝试加入水平形成中心部分的5个盒子。然后我需要加入它上面和下面的方框。

pdf ghostscript
1个回答
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版本。

© www.soinside.com 2019 - 2024. All rights reserved.