我需要合并几个午睡的pdfs,并且我希望所有的输入pdfs都从输出pdf中的一个奇怪的页面开始。
示例:A.pdf
有3页,B.pdf
有4页。我不想我的输出有7页。我想要的是一个8页的pdf,其中1-3页来自A.pdf
,第4页是空的,5-8页来自B.pdf
。我该怎么做?
我知道pdftk,但我在手册页中没有找到这样的选项。
发布于 2013-02-28 20:14:11
如果您愿意编写一些Python,那么PyPdf库可以使这类事情变得简单。将下面的代码保存在一个名为pdf-cat-even
(或您喜欢的任何代码)的脚本中,使其可执行(chmod +x pdf-cat-even
),并作为一个过滤器(./pdf-cat-even a.pdf b.pdf >concatenated.pdf
)运行它。对于pyPdf方法,需要addBlankPage
≥1.13。
#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
output = PdfFileWriter()
output_page_number = 0
alignment = 2 # to align on even pages
for filename in sys.argv[1:]:
# This code is executed for every file in turn
input = PdfFileReader(open(filename))
for p in [input.getPage(i) for i in range(0,input.getNumPages())]:
# This code is executed for every input page in turn
output.addPage(p)
output_page_number += 1
while output_page_number % alignment != 0:
output.addBlankPage()
output_page_number += 1
output.write(sys.stdout)
发布于 2013-02-28 16:14:39
第一步是生成一个包含空页的pdf文件。您可以通过很多程序(LibreOffice/OpenOffice、inkscape、(La)TeX、scribus等)轻松地做到这一点。
然后,只需在需要的地方包含这个空页面:
pdftk A.pdf empty_page.pdf B.pdf output result.pdf
如果要使用脚本自动完成此操作,可以使用例如pdftk file.pdf dump_data | grep NumberOfPages | egrep -o '[0-9]*'
提取页面计数。
发布于 2013-02-28 16:22:10
您也可以使用LaTeX来完成这个任务(虽然我知道这可能不是您想要的)。下面这样的东西应该能起作用:
\documentclass{book}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-]{A}
\cleardoublepage % Make sure we clear to an odd page
\includepdf[pages=-]{B} % This inserts all pages. Or you can specify specific pages, a range, or `{}` for a blank page
\end{document}
请注意,\cleardoublepage
只使用为双面打印而生成的类插入空白页(例如。(书籍)
关于pdfpages
的更多选项和信息可以在CTAN上找到。
https://unix.stackexchange.com/questions/66418
复制相似问题