有谁知道将pdf页面从中间分成两个新页面的好方法吗?
需要明确的是,我不是要从pdf拆分现有页面。我正在尝试从现有的单个页面创建两个新页面。
有谁知道将pdf页面从中间分成两个新页面的好方法吗?
需要明确的是,我不是要从pdf拆分现有页面。我正在尝试从现有的单个页面创建两个新页面。
Answers:
您可以借助Ghostscript解决此问题。pdftk
据我所知,仅靠这一点是无法做到的。我将为您提供手动执行此操作的命令行步骤。将此脚本编写为一个过程很容易,而且页面大小和页码的参数也不同。但是你说你可以自己做;-)
...并且为了它的乐趣,我最近不是用一个具有“双倍”页面的输入文件来完成它,而是使用一个“高倍率”页面来完成它。您可以在其他答复中阅读此案例的答案。
您的情况甚至更简单。您似乎有类似以下内容:
+------------+------------+ ^
| | | |
| 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 -->
"<</PageOffset [-421 0]>> setpagedevice"
。我猜这取决于原始文件的方向。尽管如此,出色的答案。:)
感谢@marttt及其在Unix和Linux中的回答。
您可以使用mutool
(作为的一部分mupdf
):
mutool poster -x 2 input.pdf output.pdf
-y
如果要执行垂直分割,也可以使用。
要扩展@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。但是随后必须重新设置裁剪以修剪页面,以使页面显得无缝。否则,将介质设置为裁切。