如何每面打印多页且一页(右页)空白?

如何每面打印多页且一页(右页)空白?

输入文件是任何 pdf 文档。我想要右侧有空间来写笔记。

输出.pdf 看起来像

在此输入图像描述

答案1

为此你可以结合pdftkpdfnup:

首先创建一个带有空页面(使用 LibreOffice/OpenOffice、inkscape、(La)TeX、scribus 等)的 pdf,名为empty.pdf

然后在您的 shell 中或通过 shell 脚本调用:

INPUTPDF=input.pdf
NUMPAGES=$(pdftk "$INPUTPDF" dump_data | grep NumberOfPages | egrep -o '[0-9]*')
pdftk "A=$INPUTPDF" B=empty.pdf cat $(for i in $(seq $NUMPAGES) ; do echo A$i B1 ; done) output output.pdf
pdfnup output.pdf
mv output-nup.pdf output.pdf

命令pdftk行扩展为:

 pdftk A=input.pdf B=empty.pdf cat A1 B1 A2 B1 [...]

答案2

除了乔费尔的回答之外,

pdfjam如果您对其选项有创意,也可以直接执行此操作。

pdfjam --landscape --offset '-8cm 0cm' document.pdf

默认情况下,--landscape不加任何nup选项将使页面居中;使用负偏移,您可以将其移动到您喜欢的左侧(最佳值将取决于您的输入)。

答案3

PyPdf 库Python 可以轻松地重新排列 PDF 文件中的页面。这是一个小脚本,可以旋转每个页面并将其缩小到一半大小。警告:未经测试。

#!/usr/bin/env python
import copy, 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.rotateClockwise(270)
    (w, h) = p.mediaBox.upperRight
    p.mediaBox.upperRight = (w/2, h/2)
    output.addPage(p)
output.write(sys.stdout)

相关内容