在Linux的世界里,命令行工具的强大往往超出想象。无论是日常办公还是专业文档处理,将各类内容转换为PDF格式是一项常见需求。Linux系统提供了丰富的工具链,让用户能够通过命令行快速、灵活地生成和管理PDF文件。本文将深入探讨几款实用的Linux工具,帮助你掌握从文本、网页、图像到PDF的转换技巧,提升工作效率。
一、文本转PDF:简单高效的enscript与ps2pdf组合
对于纯文本文件,enscript是一个强大的工具,它可以将文本转换为PostScript格式,再通过ps2pdf转换为PDF。这种组合不仅支持基本的文本转换,还能实现分页、字体设置和页眉页脚定制。
1. 安装与基本使用
在Debian/Ubuntu系统中,安装enscript和ghostscript(ps2pdf的依赖):
sudo apt-get install enscript ghostscript
将文本文件document.txt转换为PDF:
enscript -p - document.txt | ps2pdf - output.pdf
这里-p -表示将PostScript输出到标准输出,再通过管道传递给ps2pdf,最终生成output.pdf。
2. 高级定制
enscript支持丰富的选项,例如设置字体、页面大小和页眉:
enscript -B -f Courier@12 -p - document.txt | ps2pdf - output.pdf
-B:隐藏页眉页脚-f Courier@12:使用Courier字体,字号12- 还可以通过
-a指定页码范围,-2实现双栏布局等。
二、网页转PDF:wkhtmltopdf的全能转换
wkhtmltopdf是一款基于WebKit引擎的工具,能够将HTML网页或本地HTML文件转换为高质量的PDF。它支持CSS样式、JavaScript渲染,甚至可以处理动态内容。
1. 安装与基础命令
在Debian/Ubuntu上安装:
sudo apt-get install wkhtmltopdf
转换网页https://example.com为PDF:
wkhtmltopdf https://example.com example.pdf
转换本地HTML文件:
wkhtmltopdf input.html output.pdf
2. 高级参数
wkhtmltopdf提供了大量参数用于定制输出,例如:
- 设置页面大小:
--page-size A4 - 调整边距:
--margin-top 20mm --margin-bottom 20mm - 启用JavaScript:
--enable-javascript - 生成目录:
--outline示例:wkhtmltopdf --page-size A4 --margin-top 15mm --enable-javascript https://example.com example.pdf
三、图像转PDF:convert与img2pdf的灵活选择
将图片转换为PDF是日常工作中的常见需求,Linux下有两款实用工具:ImageMagick的convert命令和专门的img2pdf。
1. convert命令(ImageMagick)
convert支持几乎所有图像格式到PDF的转换,且能合并多张图片:
sudo apt-get install imagemagick
转换单张图片:
convert image.jpg output.pdf
合并多张图片:
convert image1.jpg image2.png output.pdf
调整图片大小和质量:
enscript -p - document.txt | ps2pdf - output.pdf0
2. img2pdf:更轻量的选择
img2pdf专注于图像转PDF,支持保留原始图像质量,且文件体积更小:
enscript -p - document.txt | ps2pdf - output.pdf1
转换单张图片:
enscript -p - document.txt | ps2pdf - output.pdf2
合并多张图片:
enscript -p - document.txt | ps2pdf - output.pdf3
img2pdf还支持设置页面大小和方向:
enscript -p - document.txt | ps2pdf - output.pdf4
四、PDF编辑与管理:pdftk与qpdf的强大功能
生成PDF后,有时需要对其进行编辑,如合并、拆分、加密等。pdftk和qpdf是两款功能强大的PDF处理工具。
1. pdftk:PDF瑞士军刀
pdftk支持合并、拆分、旋转、加密PDF文件:
enscript -p - document.txt | ps2pdf - output.pdf5
合并多个PDF:

enscript -p - document.txt | ps2pdf - output.pdf6
拆分PDF(提取第1-3页):
enscript -p - document.txt | ps2pdf - output.pdf7
加密PDF(设置密码):
enscript -p - document.txt | ps2pdf - output.pdf8
2. qpdf:更轻量的PDF处理工具
qpdf同样支持PDF的合并、拆分和加密,且速度更快:
enscript -p - document.txt | ps2pdf - output.pdf9
合并PDF:
enscript -B -f Courier@12 -p - document.txt | ps2pdf - output.pdf0
拆分PDF(提取第1-3页):
enscript -B -f Courier@12 -p - document.txt | ps2pdf - output.pdf1
加密PDF:
enscript -B -f Courier@12 -p - document.txt | ps2pdf - output.pdf2
五、PDF预览与转换:evince与pdftoppm的实用技巧
除了命令行工具,Linux桌面环境也提供了图形化工具,如evince(PDF阅读器),而pdftoppm则可以将PDF转换为图像。
1. evince:PDF阅读器与简单编辑
evince是GNOME桌面的默认PDF阅读器,支持基本的注释、文本选择和打印功能。通过命令行可以快速打开PDF:
enscript -B -f Courier@12 -p - document.txt | ps2pdf - output.pdf3
2. pdftoppm:PDF转图像
pdftoppm可以将PDF的每一页转换为图像文件(如PNG、JPG):
enscript -B -f Courier@12 -p - document.txt | ps2pdf - output.pdf4
转换PDF为PNG图像:
enscript -B -f Courier@12 -p - document.txt | ps2pdf - output.pdf5
生成的文件将是output-1.png、output-2.png等,对应PDF的每一页。
六、自动化与脚本:批量处理PDF的高效方案
结合Shell脚本,我们可以实现PDF的批量处理。例如,批量将目录下的所有图片转换为PDF:
enscript -B -f Courier@12 -p - document.txt | ps2pdf - output.pdf6
或者批量合并多个PDF:
enscript -B -f Courier@12 -p - document.txt | ps2pdf - output.pdf7
总结
Linux系统提供了丰富的PDF处理工具,从文本、网页、图像的转换,到PDF的编辑与管理,每一步都可以通过命令行高效完成。掌握这些工具不仅能提升工作效率,还能让你在处理PDF时更加灵活。无论是简单的转换还是复杂的批量处理,Linux的工具链都能满足你的需求。不妨尝试将这些工具融入日常工作,体验命令行带来的便捷与强大。
