使用到了使用了Apache PDFBox库
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.util.Base64;
public class PdfToJpgBase64 {
public static String pdfToJpgBase64(String pdfPath) throws IOException {
// 加载PDF文件
PDDocument document = PDDocument.load(new File(pdfPath));
// 创建PDF渲染器
PDFRenderer pdfRenderer = new PDFRenderer(document);
// 获取PDF的页数
int numPages = document.getNumberOfPages();
// 定义存储Base64编码结果的StringBuilder
StringBuilder resultBuilder = new StringBuilder();
// 遍历每一页
for (int pageIndex = 0; pageIndex < numPages; pageIndex++) {
// 渲染PDF页为BufferedImage
BufferedImage bim = pdfRenderer.renderImageWithDPI(pageIndex, 300);
// 创建一个内存缓冲流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 将BufferedImage写入输出流
ImageIO.write(bim, "jpg", baos);
// 将图片数据转换为字节数组
byte[] imageBytes = baos.toByteArray();
// 进行Base64编码
String base64Data = Base64.getEncoder().encodeToString(imageBytes);
// 将Base64编码的结果追加到StringBuilder中
resultBuilder.append(base64Data);
// 添加分隔符,用于区分每一页的Base64编码结果
resultBuilder.append("###");
}
// 关闭文档
document.close();
// 返回Base64编码的结果字符串
return resultBuilder.toString();
}
public static void main(String[] args) {
try {
// 指定PDF文件路径
String pdfPath = "example.pdf";
// 调用函数进行转换和编码
String result = pdfToJpgBase64(pdfPath);
// 输出Base64编码的结果
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
}
}
}