合并 PDF 文件

2023-12-27

是否可以使用 Python 合并单独的 PDF 文件?

假设是这样,我需要进一步扩展一下。我希望循环遍历目录中的文件夹并重复此过程。

我可能会碰碰运气,但是否有可能排除每个 PDF 中包含的页面(我的报告生成总是会创建一个额外的空白页面)。


您可以使用pypdf https://github.com/py-pdf/pypdfs PdfMerger https://pypdf.readthedocs.io/en/stable/modules/PdfMerger.html class.

文件串联

您可以简单地连接 https://en.wikipedia.org/wiki/Concatenation文件通过使用append https://pypdf.readthedocs.io/en/latest/modules/PdfMerger.html#pypdf.PdfMerger.append method.

from pypdf import PdfMerger

pdfs = ['file1.pdf', 'file2.pdf', 'file3.pdf', 'file4.pdf']

merger = PdfMerger()

for pdf in pdfs:
    merger.append(pdf)

merger.write("result.pdf")
merger.close()

如果需要,您可以传递文件句柄而不是文件路径。

文件合并

如果您想要更细粒度的合并控制,可以使用merge https://pypdf.readthedocs.io/en/latest/modules/PdfMerger.html#pypdf.merger.PdfMerger.merge的方法PdfMerger,它允许您在输出文件中指定插入点,这意味着您可以将页面插入文件中的任何位置。这append方法可以被认为是merge其中插入点是文件末尾。

e.g.

merger.merge(2, pdf)

在这里,我们将整个 PDF 插入到输出中,但在第 2 页。

页面范围

如果您希望控制从特定文件附加哪些页面,您可以使用pages的关键字参数append and merge,传递一个元组形式(start, stop[, step])(就像常规的range功能)。

e.g.

merger.append(pdf, pages=(0, 3))    # first 3 pages
merger.append(pdf, pages=(0, 6, 2)) # pages 1,3, 5

如果您指定了无效范围,您将得到一个IndexError.

Note:另外,为了避免文件保持打开状态,PdfMerger当合并文件写入后,应调用 close 方法。这可确保及时关闭所有文件(输入和输出)。遗憾的是PdfMerger没有作为上下文管理器实现,所以我们可以使用with关键字,避免显式关闭调用并获得一些简单的异常安全性。

您可能还想查看pdfly cat https://github.com/py-pdf/pdfly由 pypdf 开发人员提供的命令。您可以完全避免编写代码的需要。

pypdf 文档还includes https://pypdf.readthedocs.io/en/stable/user/merging-pdfs.html一些演示合并的示例代码。

PyMuPdf

另一个可能值得一看的图书馆是PyMuPdf https://github.com/pymupdf/PyMuPDF。合并同样简单。

从命令行:

python -m fitz join -o result.pdf file1.pdf file2.pdf file3.pdf

并从代码中

import fitz

result = fitz.open()

for pdf in ['file1.pdf', 'file2.pdf', 'file3.pdf']:
    with fitz.open(pdf) as mfile:
        result.insert_pdf(mfile)
    
result.save("result.pdf")

有很多选项,详细信息在项目中wiki https://github.com/pymupdf/PyMuPDF/wiki.

注意:在旧版本的 PyMuPDF 中insert_pdf was insertPDF

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合并 PDF 文件 的相关文章

  • Python Popen 与 psexec 挂起 - 不良结果

    我对 subprocess Popen 和我认为是管道的问题有疑问 我有以下代码块 从 cli 运行时 100 都不会出现问题 p subprocess Popen psexec serverName get cmd c ver echo
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • Django 模型在模板中不可迭代

    我试图迭代模型以获取列表中的第一个图像 但它给了我错误 即模型不可迭代 以下是我的模型和模板的代码 我只需要获取与单个产品相关的列表中的第一个图像 模型 py class Product models Model title models
  • if 语句未命中中的 continue 断点

    在下面的代码中 两者a and b是生成器函数的输出 并且可以评估为None或者有一个值 def testBehaviour self a None b 5 while True if not a or not b continue pri
  • 忽略 Mercurial hook 中的某些 Mercurial 命令

    我有一个像这样的善变钩子 hooks pretxncommit myhook python path to file myhook 代码如下所示 def myhook ui repo kwargs do some stuff 但在我的例子中
  • 如何计算numpy数组中元素的频率?

    我有一个 3 D numpy 数组 其中包含重复的元素 counterTraj shape 13530 1 1 例如 counterTraj 包含这样的元素 我只显示了几个元素 array 136 129 130 103 102 101 我
  • 为什么Python的curses中escape键有延迟?

    In the Python curses module I have observed that there is a roughly 1 second delay between pressing the esc key and getc
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 切片 Dataframe 时出现 KeyError

    我的代码如下所示 d pd read csv Collector Output csv df pd DataFrame data d dfa df copy dfa dfa rename columns OBJECTID Object ID
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • 更改 `base_compiledir` 以将编译后的文件保存在另一个目录中

    theano base compiledir指编译后的文件存放的目录 有没有办法可以永久设置theano base compiledir到不同的位置 也许通过修改一些内部 Theano 文件的内容 http deeplearning net
  • 使用 OLS 回归预测未来值(Python、StatsModels、Pandas)

    我目前正在尝试在 Python 中实现 MLR 但不确定如何将我找到的系数应用于未来值 import pandas as pd import statsmodels formula api as sm import statsmodels
  • 对图像块进行多重处理

    我有一个函数必须循环遍历图像的各个像素并计算一些几何形状 此函数需要很长时间才能运行 在 24 兆像素图像上大约需要 5 小时 但似乎应该很容易在多个内核上并行运行 然而 我一生都找不到一个有据可查 解释充分的例子来使用 Multiproc
  • 如何从Python中的字符串中提取变量名称和值

    我有一根绳子 data var1 id 12345 name John White python中有没有办法将var1提取为python变量 更具体地说 我对字典变量感兴趣 这样我就可以获得变量的值 id和name python 这是由提供
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • 无法在 osx-arm64 上安装 Python 3.7

    我正在尝试使用 Conda 创建一个带有 Python 3 7 的新环境 例如 conda create n qnn python 3 7 我收到以下错误 Collecting package metadata current repoda
  • python Soap zeep模块获取结果

    我从 SOAP API 得到如下结果 client zeep Client wsdl self wsdl transport transport auth header lb E authenticate self login res cl
  • mac osx 10.8 上的初学者 python

    我正在学习编程 并且一直在使用 Ruby 和 ROR 但我觉得我更喜欢 Python 语言来学习编程 虽然我看到了 Ruby 和 Rails 的优点 但我觉得我需要一种更容易学习编程概念的语言 因此是 Python 但是 我似乎找不到适用于
  • 如何为每个屏幕添加自己的 .py 和 .kv 文件?

    我想为每个屏幕都有一个单独的 py 和 kv 文件 应通过 main py main kv 中的 ScreenManager 选择屏幕 设计应从文件 screen X kv 加载 类等应从文件 screen X py 加载 Screens
  • Python 无法使用套接字绑定我的外部/公共 IP 地址,给出错误但是当使用本地 IP 地址时,错误不会显示

    这是出现主要错误的代码 与我的本地 IP 的绑定将起作用 s bind 192 168 1 4 port 与我的公共 IP 的绑定失败并出现以下错误 s bind 99 99 99 99 port WinError 10049 请求的地址在

随机推荐

  • 使用 LESS 构建选择器列表

    一般问题 我有媒体查询 我在其中更改某些文本元素 如下所示 body single entry content p body single entry content ul body single entry content ol body
  • Cognito 和 Java - 用户名不能是电子邮件格式,因为用户池是为电子邮件别名配置的

    我创建了 Cognito 用户池 如下所示 settings https i stack imgur com sXf06 png for 允许用户通过电子邮件或用户名登录 并且对于每个用户来说都是唯一的 这是我的帐户 Cognito 实施
  • Jquery 验证删除规则不起作用

    我正在根据输入动态设置验证 在添加验证之前 我要删除规则并添加它是必需的元素 我设置删除规则后 消息不会消失 for var i 0 i lt data length i switch data i FieldName case ADDRE
  • Scala Play 2.1.0 - 资产未出现在 Heroku 上?

    我的应用程序在开发中运行良好 图像显示 但是当部署到 Heroku 时 它们神秘地消失了 代码是 img src routes Assets at myImage png gt Heroku 是否搞砸了 或者我错过了什么 确保您的项目pub
  • Select2 formatResult 获取选项的属性

    使用 在 select2 中获取自定义数据属性 https stackoverflow com questions 22261209 get custom data attribute in select2 with select 我们需要
  • 从 timedelta 中提取分钟 - Python

    我有一个包含 timedelta 的列 我想创建一个额外的列 从 timedelta 列中提取小时和分钟 df time delta hour minute 02 51 21 401000 2h 51min 03 10 32 401000
  • 在哪里可以找到 System.Linq.Dynamic dll?

    我正在到处寻找这个dll 但在任何地方都找不到它 有人知道在哪里可以得到它并可以帮助我吗 谢谢 现在可以通过NuGet https nuget org packages System Linq Dynamic画廊也是
  • Node.js mongodb如何连接到mongo服务器的replicaset

    我在用mongo and node js在一个应用程序中 mongo数据库由两台服务器组成 在给出的例子中http howtonode org express mongodb http howtonode org express mongo
  • 在LUA中调用Rest api端点

    我需要从 Lua 脚本调用 Rest API 端点 我怎样才能做到这一点 例如 我可以通过以下curl命令调用端点 curl X GET H X Parse Application Id ParseAppID H X Parse REST
  • NodeJS - SHA256 密码加密

    我目前正在学习 NodeJS 中的加密和密码安全 我正在使用当前使用 PBKDF2 的当前示例 我想将其切换为使用 SHA256 这可能和 或有意义吗 我该怎么办呢 var crypto require crypto var len 128
  • ACTION_PICK 与 MediaStore.Images.Media.INTERNAL_CONTENT_URI 允许用户选择通过 picasa 同步的图像(不在设备上?)

    我正在运行 ICS 并使用相同 Google 帐户的平板电脑和手机上测试我们的应用程序 如果我在一台设备上拍照 它将显示在另一台设备上 通过 Picasa 同步 奇怪的是 当我执行正常操作时 照片会显示在两个设备上 Intent inten
  • 退出 root conda 环境

    一旦我安装了 miniconda 我就永久处于 root miniconda 环境中 例如 luc montblanc conda info envs conda environments bunnies home luc minicond
  • Imgur API 和 VB.NET 帮助 - Image POST

    我正在尝试将图像发送到 Imgur 的服务器 一切都很顺利 我从解析器中获取了图像的 URL 但是当我尝试在网络浏览器上打开它时 我没有得到图像 只有一个 损坏的图像 图标 我认为这是转换为字节数组的问题 但我不明白 请让我知道 修复我的代
  • 在 Servlet/JSP 中加载属性文件[重复]

    这个问题在这里已经有答案了 我创建了一个jar从我的Java project并想在一个JSP Servlet Project 我正在尝试加载一个属性文件 比如说我的sample propertiesJSP Servlet Project保存
  • 通过Webpack导入模块中的图片

    我的应用程序使用 NodeJs webpack 和 ES2015 我似乎无法弄清楚如何在我的模块中导入图像 以下不起作用 import css image t1 png 编辑 根据 Sitian 的要求 这是我的 webpack 配置 co
  • 隐藏 SSRS 中的列

    我正在使用 SSRS 2012 和 Excel 2010 我想在导出到 Excel 时隐藏一列 在浏览了一些论坛后 似乎最好的方法是转到您正在查找的内容的列或文本框隐藏并在 可见性 隐藏 选项下将 表达式 设置为 IIF Globals R
  • Chicken计划中的命名空间

    命名空间在 Chicken Scheme 中如何工作 我现在正在使用parley鸡蛋 当我定义一个名为例如的函数时read 由于名称冲突而导致错误 实际上 因为我的read覆盖parley s own read 并且以错误的类型调用它 这是
  • 使用 URL swift Alamofire 上传视频

    我需要使用 alamofire 将视频上传到服务器 用户选择视频 我在 didFinishPickingMediaWithInfo 中成功获取 URL 如下所示 func imagePickerController picker UIIma
  • 如何导入无法识别的日期时间格式的 CSV?

    该表如下所示 CREATE TABLE dbo temptable id nvarchar 50 COLLATE SQL Latin1 General CP1 CI AS NOT NULL datetime datetime NOT NUL
  • 合并 PDF 文件

    是否可以使用 Python 合并单独的 PDF 文件 假设是这样 我需要进一步扩展一下 我希望循环遍历目录中的文件夹并重复此过程 我可能会碰碰运气 但是否有可能排除每个 PDF 中包含的页面 我的报告生成总是会创建一个额外的空白页面 您可以