如何将PDF的页面分成中间部分?


38

有谁知道将pdf页面从中间分成两个新页面的好方法吗?

需要明确的是,我不是要从pdf拆分现有页面。我正在尝试从现有的单个页面创建两个新页面。


你为什么要这样做?变小的页面?
akira

好吧,MS Office不是免费软件,但是,如果您有MS Office 2007,则可以将文档另存为PDF文件,并
Owen


Answers:


26

试试BRISS

替代文字

它允许您通过使用GUI定义区域,将每个页面分成所需的子页面。它为您将所有相似的页面分为几组,因此您可以一次为该组定义区域。

它是跨平台,免费和开源的。


似乎这增加了文件大小(时间为“每个输入页面的输出页面数”),因为它使用原始页面内容和每个裁剪页面的裁剪框。如果需要较小的文件大小,可以将输出文件打印到PS,然后转换为PDF,但是这样可能会降低质量(例如,由于位图字体)。
tanius

37

您可以借助Ghostscript解决此问题。pdftk据我所知,仅靠这一点是无法做到的。我将为您提供手动执行此操作的命令行步骤。将此脚本编写为一个过程很容易,而且页面大小和页码的参数也不同。但是你说你可以自己做;-)

如何借助Ghostscript解决此问题...

...并且为了它的乐趣,我最近不是用一个具有“双倍”页面的输入文件来完成它,而是使用一个“高倍率”页面来完成它。您可以在其他答复中阅读此案例的答案。

您的情况甚至更简单。您似乎有类似以下内容:

+------------+------------+   ^
|            |            |   |
|      1     |      2     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
             ^
            fold
             v
+------------+------------+   ^
|            |            |   |
|      3     |      4     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
<---------- 842 pt -------->

您要创建1个PDF,包含4个页面,每个页面的大小为421点x 595点。

第一步

首先,从每个输入页面中提取左侧部分:

gs \
    -o left-sections.pdf \
    -sDEVICE=pdfwrite \
    -g4210x5950 \
    -c "<</PageOffset [0 0]>> setpagedevice" \
    -f double-page-input.pdf

这些参数是做什么的?

首先,要知道在PDF中1英寸== 72磅。然后剩下的就是:

  • -o ...............:命名输出文件。也隐式使用-dBATCH -dNOPAUSE -dSAFER
  • -sDEVICE=pdfwrite : 我们希望将PDF作为输出格式。
  • -g................:设置输出媒体大小(以像素为单位)。pdfwrite的默认分辨率为720 dpi。因此,乘以10即可得到PageOffset的匹配项。
  • -c "..............:要求Ghostscript在主输入文件(需要紧随其后-f)之前处理给定的PostScript代码段。
  • <</PageOffset ....:设置介质上页面图像的移位。(当然,对于左页,按移位[0 0]没有实际效果。)
  • -f ...............: 处理此输入文件。

最后一条命令取得了什么结果?

这个:

Output file: left-sections.pdf, page 1
+------------+  ^
|            |  |
|     1      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v

Output file: left-sections.pdf, page 2
+------------+  ^
|            |  |
|     3      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v
<-- 421 pt -->

第二步

接下来,右边的部分:

gs \      
    -o right-sections.pdf \
    -sDEVICE=pdfwrite \
    -g4210x5950 \
    -c "<</PageOffset [-421 0]>> setpagedevice" \
    -f double-page-input.pdf

结果:

Output file: right-sections.pdf, page 1
+------------+  ^
|            |  |
|     2      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v

Output file: right-sections.pdf, page 2
+------------+  ^
|            |  |
|     4      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v
<-- 421 pt -->

最后一步

现在,我们将页面合并到一个文件中。我们也可以使用ghostscript来做到这一点,但我们会改用pdftk它,因为它可以更快地完成此工作:

pdftk \
  A=right-sections.pdf \
  B=left-sections.pdf \
  shuffle A B \
  output single-pages-output.pdf
  verbose

做完了 这是期望的结果。4个不同的页面,尺寸为421x595磅。

结果:

+------------+ +------------+ +------------+ +------------+   ^
|            | |            | |            | |            |   |
|     1      | |     2      | |     3      | |     4      |   |
|            | |            | |            | |            | 595 pt
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
+------------+ +------------+ +------------+ +------------+   v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->

3
漂亮!如果您想继续免费获得投票,则应该在每个答案中都使用它!
伊沃·弗利普斯

2
第二步只为我工作,当我使用负偏差:"<</PageOffset [-421 0]>> setpagedevice"。我猜这取决于原始文件的方向。尽管如此,出色的答案。:)
moraes

1
对我来说,第二步也使用减号
-Rafareino

9

感谢@marttt及其在Unix和Linux中回答

您可以使用mutool(作为的一部分mupdf):

mutool poster -x 2 input.pdf output.pdf

-y如果要执行垂直分割,也可以使用。


谢谢,这是一个简单的解决方案。不幸的是,无法使用页面上的内容来调整页边距-为此,请使用Kurt Pfeifle描述的方法。
扬Lalinský

0

要扩展@Kurt的答案(因为我没有足够的声誉点要发表评论),请首先确保您使用的尺寸不是基于“裁剪框”尺寸(如果它们与“媒体框”尺寸不同)。输出大小基于“媒体盒”尺寸,但偏移量似乎使用“作物盒”尺寸。

对于具有20.0833 x 13.833媒体框和19.25 x 13.0裁切框(与我的文档中的裁切框相同)的折叠页面,请将其在Ubuntu上分成两页,在左侧:

gs -o left.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [0 0]>> setpagedevice" -f gatefold.pdf

右侧:

gs -o right.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [-693 0]>> setpagedevice" -f gatefold.pdf

然后用缝制pdftk left.pdf right.pdf output final.pdf

另一种选择是将裁切框设置为与媒体框相同。那么偏移量将为-723。但是随后必须重新设置裁剪以修剪页面,以使页面显得无缝。否则,将介质设置为裁切。


注意,使用这些命令选项拆分页面后,媒体框不会更改。只有农作物发生变化。如果将一页拆分为多页,新页将保留旧页的媒体框尺寸。需要修改媒体盒的尺寸。虽然不知道如何在不包含数字的情况下将媒体盒设置为裁剪。
motorbaby

哎呀。我的意思是新页面保留了旧页面中的裁剪框尺寸。
motorbaby

发现了Acrobat PDF的错误。在视觉上,可以在Acrobat的“设置页面框”中看到cropBox的尺寸。但是使用Ghostscript划分门折后的cropBox尺寸将旧页面尺寸保留在另一个级别。这可以在Acrobat的Preflight分析信息中看到。在左侧页面Acrobat中将作物临时调整为任意数字,然后将其恢复为0之后,还调整了其他盒子尺寸(出血,装饰和修剪)。这解决了cropBox数据仍显示旧页面尺寸的问题。右边的页面有些不同。
motorbaby
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.