命令行里的PDF魔术师:用代码玩转文档的7个实用工具

超级PDF知识库 PDF技巧

当你需要处理PDF时,第一反应是不是打开Adobe Acrobat或WPS?这些可视化工具固然直观,但面对批量处理、自动化流程或服务器环境时,它们就显得力不从心了。这时,藏在命令行里的PDF工具就会露出“真面目”——它们轻量、高效、可脚本化,能轻松完成合并拆分压缩等复杂操作。今天,我们就来解锁这些“PDF魔术师”,让你用几行代码搞定别人点半天鼠标的工作。

一、为什么要拥抱命令行PDF工具?

在谈具体工具前,先回答一个问题:明明有图形界面,为什么还要折腾命令行?

答案很简单:效率和自动化

想象一下:你手里有100份客户合同PDF,需要批量加水印;或者你需要每天凌晨自动将服务器上的报表合并成一个文件;又或者你在没有图形界面的Linux服务器上处理PDF——这些场景下,图形工具要么操作繁琐,要么根本用不了。而命令行工具可以:

随机图片

  • 批量处理:一条命令搞定上百个文件;
  • 脚本化:嵌入Shell、Python脚本,实现自动化工作流;
  • 跨平台:大多数工具支持Windows、macOS、Linux;
  • 轻量无广告:不需要安装庞大的软件,甚至可以直接用系统自带的工具。

二、7个必备命令行PDF工具,覆盖90%场景

下面这些工具,每一个都有自己的“独门绝技”。建议你根据需求收藏,用的时候直接“抄作业”。

1. pdftk:PDF界的“瑞士军刀”

定位:基础PDF操作的全能选手
核心功能:合并、拆分、旋转、加密、加水印、提取文本/页面
安装

  • macOS:brew install pdftk
  • Ubuntu/Debian:sudo apt install pdftk
  • Windows:官网下载安装包(pdftk.org

实用场景 & 命令示例

  • 合并PDF:把report1.pdfreport2.pdf合并成combined.pdf
    pdftk report1.pdf report2.pdf cat output combined.pdf
  • 拆分PDF:提取第1-3页和第5页,生成selected_pages.pdf
    pdftk input.pdf cat 1-3 5 output selected_pages.pdf
  • 旋转页面:把第2页顺时针旋转90度(180为半圈,270为逆时针)
    pdftk input.pdf cat 1 2east 3-end output rotated.pdf
  • 加密PDF:设置打开密码(user_pw)和编辑密码(owner_pw
    pdftk input.pdf output encrypted.pdf user_pw 1234 owner_pw 5678

2. Ghostscript:PDF压缩与格式转换的“幕后大佬”

定位:专业级PDF压缩、PostScript与PDF互转
核心功能:压缩PDF(减小文件体积)、PS→PDF转换、PDF→图片转换
安装:几乎所有系统自带,若没有则:

  • macOS:brew install ghostscript
  • Ubuntu:sudo apt install ghostscript

实用场景 & 命令示例

  • 压缩PDF(网页级):适合分享到网页,画质损失小,体积大幅缩小
    gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed.pdf input.pdf

    说明:/screen(低分辨率,72dpi)、/ebook(中等,150dpi)、/printer(高,300dpi)、/prepress(最高,300dpi+保留色彩)

  • PDF转PNG:把每一页转成PNG图片(%03d表示页码用3位数字,如001、002)
    gs -sDEVICE=png16m -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r300 -o output_%03d.png input.pdf

3. pdfseparate & pdfunite:轻量拆分与合并工具

定位:极简主义者的选择(Poppler工具集的一部分)
核心功能:拆分单页、合并PDF(比pdftk更轻量)
安装

  • macOS:brew install poppler
  • Ubuntu:sudo apt install poppler-utils

实用场景 & 命令示例

  • 拆分所有页:把input.pdf拆成page_1.pdfpage_2.pdf
    pdfseparate input.pdf page_%d.pdf
  • 合并PDF:把page1.pdfpage2.pdf合并成merged.pdf
    pdfunite page1.pdf page2.pdf merged.pdf

4. pdf2txt:快速提取PDF文本

定位:文本提取工具(Poppler工具集成员)
核心功能:从PDF中提取纯文本(支持指定页码范围)
安装:同Poppler(poppler-utils

实用场景 & 命令示例

  • 提取全部文本:把document.pdf的文本存到output.txt
    pdftotext document.pdf output.txt
  • 提取指定页:只提取第2-5页的文本
    pdftotext -f 2 -l 5 document.pdf output.txt
  • 保留布局:加上-layout参数,尽量保持PDF中的排版(适合表格类文档)
    pdftk input.pdf cat 1-3 5 output selected_pages.pdf0

5. qpdf:PDF修复与高级操作工具

定位:处理损坏PDF、调整PDF结构
核心功能:修复损坏的PDF、解密(需知道密码)、提取元数据、线性化PDF(优化网页加载)
安装

  • macOS:brew install qpdf
  • Ubuntu:sudo apt install qpdf

实用场景 & 命令示例

  • 修复损坏的PDF:尝试修复corrupted.pdf并生成fixed.pdf
    pdftk input.pdf cat 1-3 5 output selected_pages.pdf1
  • 解密PDF:如果知道密码(比如1234),去除PDF的密码保护
    pdftk input.pdf cat 1-3 5 output selected_pages.pdf2
  • 查看PDF元数据:显示PDF的作者、创建时间、页数等信息
    pdftk input.pdf cat 1-3 5 output selected_pages.pdf3

6. img2pdf:图片转PDF的“无缝工具”

定位:将图片(JPG/PNG等)批量转成PDF
核心功能:保持图片质量、支持批量转换、可指定页面大小
安装

  • Python环境:pip install img2pdf
  • Ubuntu:sudo apt install img2pdf

实用场景 & 命令示例

  • 单张图片转PDF:把photo.jpg转成photo.pdf
    pdftk input.pdf cat 1-3 5 output selected_pages.pdf4
  • 批量图片转PDF:把images/文件夹下的所有PNG转成一个PDF
    pdftk input.pdf cat 1-3 5 output selected_pages.pdf5
  • 指定页面大小:强制PDF页面为A4大小(适合打印)
    pdftk input.pdf cat 1-3 5 output selected_pages.pdf6

7. pdfcrop:裁剪PDF空白边距

定位:去除PDF边缘的空白(适合学术论文、扫描件)
核心功能:自动或手动裁剪空白边距
安装

  • TeX Live发行版自带(因为是LaTeX工具),或:
  • Ubuntu:sudo apt install texlive-extra-utils
  • macOS:brew install mactex(或单独安装pdfcrop)

实用场景 & 命令示例

  • 自动裁剪:去除thesis.pdf的所有空白边距
    pdftk input.pdf cat 1-3 5 output selected_pages.pdf7
  • 手动裁剪:指定上下左右裁剪的距离(单位:bp,1bp≈1点)
    pdftk input.pdf cat 1-3 5 output selected_pages.pdf8

    说明:--margins "左 上 右 下",正数为保留更多边距,负数为裁剪更多。

三、组合拳:用脚本实现自动化工作流

命令行工具的最大优势是“可组合”——把多个命令串起来,就能实现复杂的自动化任务。

例子1:批量压缩文件夹里的所有PDF
创建一个Shell脚本compress_pdfs.sh

pdftk input.pdf cat 1-3 5 output selected_pages.pdf9

运行:chmod +x compress_pdfs.sh && ./compress_pdfs.sh

例子2:扫描件转PDF并自动裁剪
假设你用手机扫描了一堆图片(scan_1.jpgscan_2.jpg…),想转成一个裁剪好的PDF:

pdftk input.pdf cat 1 2east 3-end output rotated.pdf0

四、新手入门小贴士

  1. 先看帮助文档:每个工具都有--help参数(如pdftk --help),遇到问题先查帮助;
  2. 从小任务开始:先尝试合并、拆分等简单操作,再逐步尝试复杂脚本;
  3. 备份原文件:处理PDF前最好备份,避免误操作导致文件损坏;
  4. 跨平台注意:Windows的命令行(CMD/PowerShell)语法略有不同,比如路径用\而不是/,但WSL(Windows Subsystem for Linux)可以完美运行Linux命令。

结语:命令行不是“ Geek 专属”

很多人对命令行有“畏难情绪”,觉得“敲代码太复杂”。但实际上,这些PDF工具的常用命令并不难记——你甚至可以把常用命令存成脚本,用的时候双击运行。

命令行工具就像一把“瑞士军刀”,平时可能用不上,但一旦需要处理批量或自动化任务,它就是最高效的选择。试着花10分钟学会一两个工具,你会发现:原来处理PDF可以这么简单。

下次再遇到PDF处理的“小麻烦”,不妨打开终端,敲上几行命令——说不定,你会爱上这种“用代码解决问题”的快感。

0 17340