注意:
更为优化的版本(实现多页pdf):https://blog.csdn.net/datouniao1/article/details/110866883
首先需要引入两个jar pdfbox.jar,fontbox.jar,并且使用jar的时候尽量使用高版本的。大家可以从这个路径来下载到这两个jar
https://download.csdn.net/download/datouniao1/10427502
下载了之后将这两个导入到我们的项目工程,下面就是我们的代码的处理的工作了,将pdf转换为图片:
/*
* *
* 实现pdf文件转换为png
* 参数是第一个是要转的转换的是pdffile
* 第二个参数是是要存储的png图片的路径
*/
public static void pdfFileToImage(File pdffile,String targetPath){
try {
FileInputStream instream = new FileInputStream(pdffile);
InputStream byteInputStream=null;
try {
PDDocument doc = PDDocument.load(instream);
PDFRenderer renderer = new PDFRenderer(doc);
int pageCount = doc.getNumberOfPages();
if (pageCount > 0) {
BufferedImage image = renderer.renderImage(0, 2.0f);
image.flush();
ByteArrayOutputStream bs = new ByteArrayOutputStream();
ImageOutputStream imOut;
imOut = ImageIO.createImageOutputStream(bs);
ImageIO.write(image, "png", imOut);
byteInputStream = new ByteArrayInputStream(bs.toByteArray());
byteInputStream.close();
}
}
catch (IOException e) {
e.printStackTrace();
}
File uploadFile = new File(targetPath);
FileOutputStream fops;
fops = new FileOutputStream(uploadFile);
fops.write(readInputStream(byteInputStream));
fops.flush();
fops.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
public static byte[] readInputStream(InputStream inStream) throws Exception {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
inStream.close();
return outStream.toByteArray();
}
public static void main(String[] args) {
File file =new File("D:\\08\\ceshi.pdf");
//上传的是png格式的图片结尾
String targetfile="D:\\08\\wdg3.png";
pdfFileToImage(file,targetfile);
}
上面就可以将pdf文件转换为png图片了
到这个地方我就不多说了,希望对你有所帮助