将单页横向 pdf 转换为重新缩放的双页纵向 pdf

将单页横向 pdf 转换为重新缩放的双页纵向 pdf

convert我在执行以下操作时遇到问题:

我有一堆单页 pdf 文件,其几何形状对应于横向 A4 纸。实际内容在视觉上分为两页。我一直在尝试对这些文件中的每一个执行的操作基本上是:将大小调整为A3,实际上在中间垂直分割以获得两页(我尝试过但convert不成功crop),然后重新组装为两页pdf 文件由 2 个 A4 纵向页面组成。

最终内容应该是原始内容调整了一个因子sqrt(2)

[  ] -> [    ]  ->  [ | ]
        [    ]      [ | ]
 A4       A3         2xA4
lands.   lands.     portrait

这样做的全部目的是能够将调整大小的内容打印为 2 张纵向 A4 纸,而不是 1 张横向 A4,但实际上创建新的 pdf 文件比直接打印更好,因为它们可以随时重新打印并与其他人共享然后谁也可以按照预期直接打印它们。

答案1

这是一个变体un2up,它使用 Python 与pyPdf图书馆。请注意,您至少需要 1.13 版本(之前的版本不支持缩放)。未经测试。

#!/usr/bin/env python
import copy, math, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for p in [input.getPage(i) for i in range(0,input.getNumPages())]:
    p.scaleBy(math.sqrt(2))
    q = copy.copy(p)
    (w, h) = p.mediaBox.upperRight
    p.mediaBox.upperRight = (w/2, h)
    q.mediaBox.upperLeft = (w/2, h)
    output.addPage(p)
    output.addPage(q)
output.write(sys.stdout)

答案2

答案3

gs我设法使用基于答案的解决方案解决了我原来的问题superuser.com 上的这个问题,可以在 @Stone 对当前问题的回答中提到的另一个 Q/A 中的链接找到。

这是一种可以完成的方法,将其放入脚本中:

#!/bin/bash
################################################################
# Make two portrait A4 sheets out of one landscape A4 sheet, by
# splitting and resizing adequately
################################################################
# solution based on: 
# https://superuser.com/questions/235074/freeware-to-split-a-pdfs-pages-down-the-middle/235401#235401
################################################################
IN=$1
OUT=$2
TMPLEFT=/tmp/left.pdf
TMPRIGHT=/tmp/right.pdf

# left side
gs -o $TMPLEFT -sDEVICE=pdfwrite -g5955x8420 -c "<</PageOffset [0 0]>>" setpagedevice -f $IN
# right side
gs -o $TMPRIGHT -sDEVICE=pdfwrite -g5955x8420 -c "<</PageOffset [-595.5 0]>>" setpagedevice -f $IN
# join
pdfunite $TMPLEFT $TMPRIGHT $OUT

我仍然认为应该有一种更简单的方法,但这有效并避免了ImageMagick convert缺点。

答案4

对于一些 11x17 到 8.5x11 的页面,使用 Adob​​e Acrobat Pro 工具很简单。

打开原始文件,
到横向视图。
节省使用其他名称的文件(例如“Original v2p1.pdf”)
选择“高级”选项卡
选择《印刷制作》
选择“裁剪页面”
庄稼从右侧或左侧开始半页。
节省文件(“原始 v2p1.pdf)。您现在拥有第 1 页。
打开“原件.pdf,原件。
节省具有另一个关联名称的文件(第 2 页可能是“Original v2p2.pdf”)
庄稼从另一面的一半。
节省文件(“原始 v2p2.pdf)。您现在拥有第 2 页。

相关内容