PDF(Portable Document Format)文件格式的出现为人们的生活带来了极大的方便,其便携性、易保存也成为各行业普遍使用的标准文档格式。但是,对于某些需要对PDF进行编辑或处理的人士来说,将PDF转换为图片格式却成为了一件头疼的事情。因此,本文将详细介绍将PDF转成图片的工具及解决方案。
一、选用PDFTK工具进行PDF拆分
对于不使用PDFTK工具的开发者们来说,PDF内的信息无法单独提取出来,比如转化为图片等。因而,我们要使用PDFTK工具来解决这个问题,具体步骤如下:
第一步:安装PDFTK工具。
sudo apt-get install pdftk
第二步:将PDF文件拆分成单个的PDF文件。此处使用Shell脚本来实现拆分。
#!/bin/bash
filename=$1
pdftk $filename burst output ${filename%.*}_%d.pdf
第三步:编写将PDF文件转换成图片的Python脚本。具体实现如下:
# 引入Python Image Library模块
from PIL import Image
# 引入Python os模块
import os
# 指定PDF被转换后的图片格式
FORMAT = 'jpeg'
def pdf2img(f):
fname = f.split('/')[-1]
# 打开PDF
with open(f, 'rb') as pdf_file:
# 使用Python Image Library读取PDF文件
im = Image.open(pdf_file)
# 获取PDF的页码
pages = im.n_frames
# 输出PDF的页码数
print(fname + ' has ' + str(pages) + ' page(s).')
# 按照页码个数,将PDF文件拆分成一张张单独的图片
for i in range(pages):
im.seek(i)
im.save(fname[:-4] + '_' + str(i) + '.' + FORMAT)
if __name__ == '__main__':
# 获取当前工作目录
path = os.getcwd()
# 获取指定目录下所有的PDF文件
files = os.listdir(path)
pdfs = [f for f in files if f.endswith('.pdf')]
# 遍历所有的PDF文件,将其拆分成单个的PDF文件,并调用pdf2img函数将其转换成图片
for pdf in pdfs:
print('Processing ' + pdf + '.')
os.system('pdftk ' + pdf + ' burst')
pages = [f for f in os.listdir(path) if f.endswith('.pdf')]
for page in pages:
pdf2img(page)
os.remove(page)
print('Job done.')
上述代码中的pdftk工具用来将PDF文件拆分成单个的PDF文件,并使用PIL模块将其转换成对应的图片格式(此处为jpeg)。
二、选用Ghostscript工具进行PDF转换
对于需要将PDF文件转换为特定格式图片的开发者们来说,Ghostscript工具是一个非常好的选择,因其可以灵活地将PDF文件转换成可供开发者们方便处理的图片格式。
第一步:安装Ghostscript工具。
sudo apt-get install ghostscript
第二步:编写Python脚本,调用Ghostscript工具将PDF文件转换成指定的图片格式。具体实现如下:
# 引入Python os模块
import os
# 指定需要被转换的PDF文件名和PDF文件所在的目录
filename = 'file.pdf'
path = '/home/user/pdf/'
# 指定生成图片的格式
FORMAT = 'jpeg'
# 调用Ghostscript工具将PDF文件转换为图片
os.system('gs -dNOPAUSE -dBATCH -sDEVICE=jpeg -r300 -dJPEGQ=100 -sOutputFile=' + path + '%d.' + FORMAT + ' ' + path + filename)
上述代码中的gs工具是Ghostscript的核心命令,其中的参数dDEVICE指定了输出格式,dJPEGQ指定了生成图片的质量,r300指定了生成图片的分辨率为300dpi。
三、选用PDFBox工具进行PDF转换
PDFBox是一个开源的Java工具库,可以用于创建和处理PDF文档。它提供了一系列的Java API来解析、文本提取以及PDF转图像等多种功能。
第一步:下载PDFBox工具并解压缩。
wget https://www-eu.apache.org/dist/pdfbox/2.0.22/pdfbox-app-2.0.22.jar -P /usr/local/bin/ cd /usr/local/bin/ mkdir pdfbox-app unzip pdfbox-app-2.0.22.jar -d pdfbox-app
第二步:编写Java程序,调用PDFBox工具实现PDF转换为图片。具体实现如下:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class PDFToImage {
public static void main(String[] args) {
try {
// 获取PDF文件路径
String pdfFilePath = "pdf_file.pdf";
// 获取PDF文件所在目录
String pdfDirPath = "/path/to/pdf/dir/";
File pdfFile = new File(pdfDirPath + pdfFilePath);
PDDocument pdDocument = PDDocument.load(pdfFile);
PDFRenderer pdfRenderer = new PDFRenderer(pdDocument);
int pages = pdDocument.getNumberOfPages();
System.out.println(pdfFilePath + " has " + pages + " page(s).");
for (int i = 0; i < pages; i++) {
BufferedImage image = pdfRenderer.renderImageWithDPI(i, 300);
ImageIO.write(image, "jpg", new File(pdfDirPath + pdfFilePath.split("\\.")[0] + "_" + i + ".jpg"));
}
pdDocument.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
上述Java代码中的PDFRenderer类用来渲染PDF文件并生成对应格式的图片,PDDocument类则是PDFBox库中用来读取和处理PDF文档的基础类。
四、选用在线转换工具
对于非开发者或是对PDF转换成图片的内容不太在意的用户们来说,使用在线转换工具则更加的方便、快速。下面针对几个在线转换工具进行简单介绍。
1. Smallpdf:用户可以上传PDF文件,并选择转换成PNG、JPG、GIF、BMP等格式的图片。不过,该工具只允许每天转换两次,需要注册为开发商付费后才能使用全部功能。
2. Zamzar:支持多种文件格式转换,包括PDF转图片。该工具无需注册即可使用。
3. Online Convert:支持多种文件格式转换,包括PDF转图片。该工具也允许用户设置所需转换的图片相关信息,例如分辨率、颜色模式、压缩等。
总结
本文从多个方面详细介绍了将PDF转成图片的工具及解决方案,涵盖了开发环境、工具使用、代码实现等多个维度,对于需要将PDF转换成图片的开发者们和普通用户们来说都是非常实用的。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/154598.html
微信扫一扫
支付宝扫一扫