qpdf 是一款用于对 PDF 文件执行内容保持型转换的命令行工具及 C++ 库。它支持线性化、加密以及众多其他功能,还可用于文件的拆分与合并、PDF 文件的创建(需自行提供所有内容)以及文件的检查与分析。qpdf 不负责 PDF 渲染或文本提取,也不包含用于处理页面内容的高级接口。它是一款针对 PDF 文件结构进行操作的底层工具,对于希望通过编程或命令行方式处理 PDF 文件的用户而言,极具价值。
qpdf
这款免费开源软件库及命令行工具的新版本重写了针对 zsh 和 bash shell 的 Tab 补全功能,引入了一些安全更新,并修复了各种问题。

此前,Tab 补全建议由 qpdf 自身负责提供。然而,当 qpdf 被封装调用时,这种方式存在各种错误,且可能导致敏感参数泄露到环境变量中,存在安全隐患。

从 12.4.0 版本开始,该工具改用独立的描述文件(job.yml),利用生成命令行参数解析代码时所用的同一套元数据,来自动生成补全函数。

这种方式更易于维护且更安全,因为它不再需要检查或传递用户的命令行参数即可提供补全功能。

在安全性方面,qpdf 现在限制了通过 QPDFObjectHandle::makeDirect 创建直接对象(direct objects)时的 PDF 对象嵌套深度,同时也限制了 PDF 页面树的嵌套深度,从而防止因极深嵌套或恶意 PDF 文件导致程序崩溃。

此外,它现在能更早地检测出 PDF 表单域结构中的重复条目,防止特制的无效 PDF 文件导致处理速度极度缓慢。

QPDF 12.4.0 在复制 PDF 页面时会清理损坏的注释数据:在处理前移除无效的 /Annots 条目(例如类型错误、空数组或非字典类型的注释对象),从而避免因页面注释损坏而引发崩溃。
qpdf12.4.0
该版本修改了 QPDF::setMaxWarnings 的工作机制,使警告数量限制仅在初始读取 PDF 文件时生效。如果在加载过程中出现过多警告,qpdf 会判定该 PDF 文件损坏严重而无法继续处理。这避免了在文件严重损坏的情况下仍尝试继续处理。

此版本中的其他更改包括:

  • --show-linearization 选项现在即使在 PDF 文件部分损坏的情况下,也会尝试显示有关其 Web
    优化(线性化)数据的信息。
  • 能够处理超出常规 0 到 360 度范围的 PDF 页面旋转值,而不会错误地将其视为无旋转。
  • 修复了使用 --check 检查不包含任何页面的文件时出现的错误提示信息。修复了 QPDFWriter 在处理无效的 trailer
    /ID 条目时发生的故障。

有关QPDF使用的更多信息,请参阅官方发布说明

Ubuntu中安装最新版 QPDF

您可以通过下方链接在 GitHub 上获取适用于 Linux 和 Windows 的官方安装程序以及源代码压缩包:
下载 QPDF(在 Assets/资源部分)
对于 Linux,您可以下载 AppImage 文件,赋予其可执行权限后直接运行;或者下载 Zip 压缩包,解压后运行 bin 子文件夹中的可执行文件。

对于 Ubuntu,您可以通过官方 PPA 安装最新版本的 QPDF。该 PPA 目前支持 Ubuntu 22.04、24.04 和 26.04;而 Ubuntu 26.10 的系统软件仓库中已包含该新版本。

若要添加 PPA 并安装 QPDF 12.4.0,请打开终端(快捷键 Ctrl+Alt+T)并依次执行以下命令:

sudo add-apt-repository ppa:qpdf/qpdf
sudo apt update
sudo apt install qpdf

最后修改:2026 年 08 月 11 日
如果觉得我的文章对你有用,请随意赞赏