在这个PDF几乎无处不在的时代,你可能常常需要把PDF转成纯文本、网页、图片,或者把好几个PDF合并成一个文件。于是你顺手打开了搜索引擎,看到一堆“在线转换工具”,结果要么要注册,要么有文件大小限制,要么让人担心隐私安全。其实,如果你的电脑是Linux、macOS,或者Windows上装了子系统(WSL),那么恭喜你,你完全可以通过命令行免费完成这些操作,根本不需要付费的Adobe Acrobat,也不需要那些来路不明的在线服务。 ## 一个全家桶搞定大部分PDF需求 这里要介绍的工具,都来自同一套开源软件包:**poppler-utils**。它是Poppler这个PDF渲染库配套的命令行工具集。安装它之后,你就能获得一整套操作PDF的免费命令,包括本篇文章会详细介绍的`pdftotext`、`pdftohtml`、`pdfunite`、`pdftoppm`。 在Debian或Ubuntu系统中,安装只需要一条命令: ```bash sudo apt install poppler-utils ``` 如果你的发行版是其他Linux分支,也可以用对应的包管理器安装,比如Fedora用`dnf install poppler-utils`,Arch用`pacman -S poppler`。macOS用户则可以通过Homebrew安装:`brew install poppler`。 ## 1. pdftotext:把PDF变成纯文本 有时候你不需要PDF的排版和图片,只需要里面的文字内容。`pdftotext`就是干这个的。它会把PDF里的文本提取出来,写进一个纯文本文件里。用法很简单: ```bash pdftotext file.pdf file.txt ``` 如果你省略输出文件名,程序会自动生成一个和原PDF同名的`.txt`文件。比如你运行`pdftotext report.pdf`,就会得到`report.txt`。之后你可以在终端里用`less`查看,或者用任意文本编辑器打开。 这个命令特别适合批量提取文本后去搜索、复制,或者配合其他文本处理工具做进一步分析。PDF里的文字如果被扫描成了图片,那`pdftotext`可能提取不出来,因为那些内容本质上不是文本,而是图片。这种时候就需要OCR工具了,但不在今天的讨论范围内。 ## 2. pdftohtml:把PDF变成HTML网页 如果想在网页上直接展示PDF内容,或者想把PDF里的文字、图片一起摆脱排版限制,那就可以用`pdftohtml`。它同样来自poppler-utils,用法和`pdftotext`非常接近: ```bash pdftohtml file.pdf file.html ``` 运行之后,它会生成一个HTML文件,同时可能还会生成一些对应的图片文件,因为HTML里需要引用PDF中的图片。这样你就能在浏览器里直接查看PDF的内容,或者把它嵌入到网站的页面中。这个工具适合需要把PDF内容快速发布到网络上的场景,省去了手动复制粘贴的麻烦。 ## 3. pdfunite:把多个PDF合并成一个 文件名是“unite”,“合并”的意思。如果你想把手头的几份PDF合并成一份,比如把几个章节的扫描件合成一本书,`pdfunite`是命令行里的方便之选。 假设你有两个文件`file1.pdf`和`file2.pdf`,想合并成`combined.pdf`: ```bash pdfunite file1.pdf file2.pdf combined.pdf ``` 写法非常直接:前几个参数是你要合并的文件,最后一个参数是输出的合并文件名。它不止能合并两个文件,你可以随意扩展: ```bash pdfunite file1.pdf file2.pdf file3.pdf combined.pdf ``` 这样就能把三个文件按顺序合并成一个。需要注意的是,合并后的文件大小可能会比较大,如果用户只是为了减少文件数量,这没问题;但如果希望压缩体积,则需要另外使用`pdfsize`或`gs`等工具处理。 ## 4. pdftoppm:把PDF页面变成图片 如果你想在社交媒体上分享PDF中的某一页,或者把PDF转成图片后方便在PPT里引用,`pdftoppm`就是为你准备的。这个命令的默认输出格式是PPM,但这显然不符合大多数人的需求。好在你可以在命令行里指定输出格式,常用的是PNG和JPEG。 把每一页都转成PNG图片: ```bash pdftoppm -png file.pdf page ``` 这个命令会生成`page-1.png`、`page-2.png`这样的文件,数字对应PDF的页码。如果你只需要某一页,可以用`-f`和`-l`参数指定起始页和结束页。例如,只转换第3页: ```bash pdftoppm -png -f 3 -l 3 file.pdf page ``` 如果希望转成JPEG,只需把`-png`换成`-jpeg`。你还可以通过`-r`参数设置输出图片的分辨率,比如`-r 150`表示每英寸150像素,分辨率越高,图片越清晰,但文件也越大。 ## 小结 看到这里你会发现,很多日常的PDF处理需求,其实完全不需要打开付费软件,也不用把文件上传到云端的未知服务器。命令行工具看起来不如图形界面那么花哨,但胜在免费、透明、可脚本化。你可以把`pdftotext`、`pdfunite`这些命令写进Shell脚本,实现批量处理,效率远高于手动操作。下次再有人告诉你“PDF工具必须付费”,你可以微笑地告诉他:真有免费好用的办法,就在命令行里。

打开网易新闻 查看精彩图片