输入文件是任何 pdf 文档。我想要右侧有空间来写笔记。
输出.pdf 看起来像
!
答案1
首先创建一个带有空页面(使用 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)