pdftoppm 是 Linux 系统上专门用来将 PDF 文件转为图片的工具,转档速度比 ImageMagick 更快,效果也很相当不错。其基本使用方式为:
# 使用 pdftoppm 将 PDF 档转为 JPG 图片档
pdftoppm -r 300 -jpeg input.pdf output
其中 -r 参数可用来指定每英寸点数(dpi),而 -jpeg 是指定输出图片格式为 JPG,这裡的输出档名不需要写副档名,pdftoppm 会以使用者指定的输出档名,再加上自动的编号与副档名来产生每一页的图片名称,把 PDF 的每一页各储存成一张图片。转出来的结果会像这样:
pdftoppm 将 PDF 转 JPG 图片
输出图片格式
pdftoppm 这个工具在转换 PDF 文件时,若不指定输出文件格式的话,它会将 PDF 的页面转为 PPM 这种图片格式:
# 预设会转换为 PPM 图片档
pdftoppm -r 300 input.pdf output
但 PPM 这种图片格式比较不常用,通常我们都会加上一些参数,输出比较常用的图片格式,除了 JPG 之外,它还支援 PNG 与 TIFF 等格式:
# 转换为 PNG 图片档
pdftoppm -png -r 300 input.pdf output
# 转换为 TIFF 图片档
pdftoppm -tiff -r 300 input.pdf output
选择部分页面
pdftoppm 支援好几种页面选择方式。-f 参数与 -l 参数可以分别用来指定开始的页码与结束的页码(页码从 1 开始),例如:
# 只抽取 input.pdf 的第二页到第五页,转为 JPG 档
pdftoppm -jpeg -r 300 -f 2 -l 5 input.pdf output
也可以使用 -o 与 -e 参数分别指定奇数页与偶数页:
# 只抽取 input.pdf 的奇数页,转为 JPG 档
pdftoppm -jpeg -r 300 -o input.pdf output
# 只抽取 input.pdf 的偶数页,转为 JPG 档
pdftoppm -jpeg -r 300 -e input.pdf output
若只需要转换 PDF 档的单一页,可以加上 -singlefile 参数,这样的话输出档名就不会加上任何编号:
# 只转换第一页,输出档名不加编号
pdftoppm -jpeg -r 300 -singlefile input.pdf output
# 只转换第三页,输出档名不加编号
pdftoppm -jpeg -r 300 -f 3 -singlefile input.pdf output
指定解析度
若要直接指定输出图片的解析度,可以使用 -scale-to 参数,它可以让使用者指定输出图片的长边长度,而比较短的那一边的长度,则会依照比例自动计算:
# 让输出图片的长边长度为 640 像素
pdftoppm -jpeg -scale-to 640 input.pdf output
若要直接指定宽度或高度,可以用 -scale-to-x 或 -scale-to-y 参数,通常建议的作法是只指定宽度或高度,另一个数值设定为 -1,让程式自动依比例计算,这样输出的图片才不会变形:
# 让输出图片的宽度为 640 像素,高度依比例调整
pdftoppm -jpeg -scale-to-x 640 -scale-to-y -1 input.pdf output
# 让输出图片的高度为 640 像素,宽度依比例调整
pdftoppm -jpeg -scale-to-x -1 -scale-to-y 640 input.pdf output
裁切区域
若要裁切输出的图形,只留下部份的区域,可以使用 -W 与 -H 指定区域的大小,并以 -x 与 -y 指定区域的位置,例如:
# 裁切一个宽度为 640 像素、高度为 360 像素的区域,
# 此区域距离左边界 60 像素、距离上边界 80 像素
pdftoppm -jpeg -x 60 -y 80 -W 640 -H 360 input.pdf output