首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何合并pdf文件,使每个文件以奇数页码开始?

如何合并pdf文件,使每个文件以奇数页码开始?
EN

Unix & Linux用户
提问于 2013-02-28 16:04:34
回答 5查看 4.8K关注 0票数 13

我需要合并几个午睡的pdfs,并且我希望所有的输入pdfs都从输出pdf中的一个奇怪的页面开始。

示例:A.pdf有3页,B.pdf有4页。我不想我的输出有7页。我想要的是一个8页的pdf,其中1-3页来自A.pdf,第4页是空的,5-8页来自B.pdf。我该怎么做?

我知道pdftk,但我在手册页中没有找到这样的选项。

EN

回答 5

Unix & Linux用户

回答已采纳

发布于 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。

代码语言:javascript
运行
复制
#!/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)
票数 7
EN

Unix & Linux用户

发布于 2013-02-28 16:14:39

第一步是生成一个包含空页的pdf文件。您可以通过很多程序(LibreOffice/OpenOffice、inkscape、(La)TeX、scribus等)轻松地做到这一点。

然后,只需在需要的地方包含这个空页面:

代码语言:javascript
运行
复制
pdftk A.pdf empty_page.pdf B.pdf output result.pdf 

如果要使用脚本自动完成此操作,可以使用例如pdftk file.pdf dump_data | grep NumberOfPages | egrep -o '[0-9]*'提取页面计数。

票数 3
EN

Unix & Linux用户

发布于 2013-02-28 16:22:10

您也可以使用LaTeX来完成这个任务(虽然我知道这可能不是您想要的)。下面这样的东西应该能起作用:

代码语言:javascript
运行
复制
\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上找到。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/66418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档