PDF 最初由 Adobe Systems 于 1993 年开发,旨在创建一种可以在不同计算机系统、软件应用程序和设备之间轻松共享和打印的文件格式。当时,文档通常以专有文件格式创建,这些文件格式特定于用于创建它们的软件应用程序,这使得跨不同平台共享和查看文档变得困难。
PDF 被设计为一种通用文件格式,可以保留文档的格式、字体、图像和其他元素,无论用于创建它的软件或用于查看它的设备如何。该格式迅速流行起来并成为在线共享文档的标准,尤其是学术期刊、政府报告和其他专业出版物。
从 Web 服务器提供 PDF 文件非常普遍,甚至有付费的 PDF 服务器软件可用,但价格相当昂贵。在本文中,我将向您展示一种在 Web 服务器上操作、拆分和合并 PDF 文档的免费且简单的方法。
我们将要使用的软件库称为 qpdf[1],这是一个非常强大的 PDF 操作 C++ 库。它还带有一个命令行二进制工具,您可以很方便的调用该工具。
安装 QPDF
您可以自己下载并编译源代码,或者如果您可以在 Debian/Ubuntu 或 MacOS 上下载软件包。目前没有可靠的 Windows 包,所以你必须手动编译它。
在 Ubuntu 上安装:
apt -y install qpdf
在 MacOS 上安装:
brew install qpdf
如果您没有安装 Homebrew[2],请运行以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
例子
好的,现在已经安装好了,下面是一些您可能希望使用 QPDF 执行的操作的示例。
假设您有一个包含数百甚至数千页的大型 PDF,并且您希望能够仅向用户提供一页或一系列页面。可执行以下命令:
qpdf --empty --pages input_file.pdf 50,60-69 -- output_file.pdf
或者假设您想将两个 PDF 文件连接(合并)为一个文件:
qpdf --empty --pages input_file1.pdf input_file2.pdf -- output_file.pdf
您甚至可以为多个文件指定页面范围:
qpdf --empty --pages input_file1.pdf 50,60-69 input_file2.pdf 1-10 -- output_file.pdf
很简单吧?假设你有一个受密码保护的文件,你想复制它,解密它,然后将它发送给客户端:
qpdf --passsword=password --decrypt secure.pdf unsecure.pdf
如您所见,QPDF 是一个了不起的工具。您可以用它做更多的事情。这些例子只是触及了表面。 QPDF 不仅非常适合自动操作 PDF 文件,而且您还可以将它安装在您的工作站上以用于日常 PDF 编辑。
更多例子
将特定页面旋转到指定角度(顺时针):
qpdf --rotate=90:2,4,6 --rotate=180:7-8 input.pdf output.pdf
将 PDF 拆分为单独的页面:
qpdf --split-pages=n input.pdf out_%d.pdf
延伸阅读:
- 1. QPDF 手册[3]
- 2. QPDF文档[4]
引用链接
[1]
qpdf: https://qpdf.readthedocs.io/en/stable/overview.html
[2]
Homebrew: https://brew.sh/
[3]
QPDF 手册: https://www.mankier.com/1/qpdf
[4]
QPDF文档: https://qpdf.readthedocs.io/en/stable/