Java使用pdfbox将PDF转成JPG格式图片
使用的jar依赖:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>1.7.1</version>
</dependency>
Java代码demo:
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
public static void pdf2Image() throws Exception{
String pdfFilePath = "C:/pdf/aaa.pdf";//pdf文件路径
String destFormat = "jpg";//最终希望PDF文件转成的文件格式
int dpi = 144;//pdi越大,图片越清晰,生成的图片也越大
File file = new File(pdfFilePath);
String destDirFile= "D:/destDir/";//最终jpg图片生成保存的目录
PDDocument doc = null;
try{
doc = PDDocument.load(file);
List<PDPage> pages = doc.getDocumentCatalog().getAllPages();//获取到当前PDF内的总页数
for(int i=1; i<= pages.size(); i++){
PDPage page = pages.get(i);
//生成彩色的图,想生成黑白的图可以改变“TYPE_3BYTE_BGR”处的值
BufferedImage image = page.convertToImage(BufferedImage.TYPE_3BYTE_BGR, dpi);
//获取PDF名->aaa.pdf
String pdfName = pdfFilePath.substring(pdfFilePath.lastIndexOf("/")+1);
//拼接生成的图片路径->D:/destDir/aaa-1.jpg
String destPath = destDirFile+pdfName.substring(0,pdfName.lastIndexOf("."))+"-"+i+"."+destFormat;
File destDirFile = new File(destPath);
if(!destDirFile.exists()){
destDirFile.mkdirs();
}
File jpgFile = new File(destPath);
ImageIO.write(image,destFormat,jpgFile);//生成图片
}
}finally{
if(doc != null){
doc.close();
}
}
}
PDF转JPG图片之后,有可能出现一些中文字体显示异常的问题,通常是显示成很多方框,网上搜索了一下可能是当前环境缺少某种字体,大家可以尝试将缺少的字体导入系统内试试,反正我是没搞成功。
如有写得不正确的地方欢迎指出。