java基于pdfbox,转PDF文件为图片
下载安装pdfbox
1、Maven项目 (推荐)
<dependencies>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>3.0.0-alpha2</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>3.0.0-alpha2</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox-tools</artifactId>
<version>3.0.0-alpha2</version>
</dependency>
</dependencies>
2、手动下载
https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox/2.0.16
3、代码
package com.study.pdf;
import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.pdfbox.tools.imageio.ImageIOUtil;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class PdfToImage {
public static void main(String[] args) {
String pdfPath = "/Users/admin/Downloads/fp.pdf";
String destPath = "/tmp/test.jpg";
File pdfFile = new File(pdfPath);
PDDocument document = null;
try {
document = Loader.loadPDF(pdfFile);
} catch (IOException e) {
e.printStackTrace();
}
PDFRenderer renderer = new PDFRenderer(document);
BufferedImage image = null;
try {
image = renderer.renderImageWithDPI(0, 300, ImageType.RGB);
} catch (IOException e) {
e.printStackTrace();
}
boolean b = false;
try {
b = ImageIOUtil.writeImage(image, destPath, 300);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(b);
}
}
4、可能遇到的问题
4-1、可能因为字体确实导致字体乱码
解决方案:
下载字体:AdobeSongStd-Light
4-2、PDDocument.load(pdfContent);飘红
解决方案:根据3.0迁移指南,PDDocument.load方法已替换为Loader方法:
try {
document = Loader.loadPDF(pdfFile);
} catch (IOException e) {
e.printStackTrace();
}

浙公网安备 33010602011771号