JAVA PDF转图片

迈不过友情╰ 2024-03-31 17:50 238阅读 0赞

目录

引入 JAR 包

代码样例


引入 JAR 包

SpringBoot 项目在Maven pom中引入

  1. <dependency>
  2. <groupId>org.apache.pdfbox</groupId>
  3. <artifactId>fontbox</artifactId>
  4. <version>2.0.1</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.pdfbox</groupId>
  8. <artifactId>pdfbox</artifactId>
  9. <version>2.0.1</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>com.lowagie</groupId>
  13. <artifactId>itext</artifactId>
  14. <version>2.1.7</version>
  15. </dependency>

代码样例

  1. package com.link.jiandanbiao.common.util;
  2. import com.lowagie.text.pdf.PdfReader;
  3. import org.apache.pdfbox.pdmodel.PDDocument;
  4. import org.apache.pdfbox.rendering.PDFRenderer;
  5. import javax.imageio.ImageIO;
  6. import java.awt.image.BufferedImage;
  7. import java.io.File;
  8. import java.io.IOException;
  9. public class PdfToImage {
  10. public static void main(String[] args) {
  11. pdf2Image("F:\\简历.pdf", "F:\\pdf2Image");
  12. }
  13. /**
  14. * @param PdfFilePath pdf路径
  15. * @param dstImgFolder
  16. */
  17. public static void pdf2Image(String PdfFilePath, String dstImgFolder) {
  18. File file = new File(PdfFilePath);
  19. PDDocument pdDocument;
  20. try {
  21. String imgPDFPath = file.getParent();
  22. int dot = file.getName().lastIndexOf('.');
  23. String imagePDFName = file.getName().substring(0, dot); // 获取图片文件名
  24. String imgFolderPath = null;
  25. if (dstImgFolder.equals("")) {
  26. imgFolderPath = imgPDFPath + File.separator + imagePDFName;// 获取图片存放的文件夹路径
  27. } else {
  28. imgFolderPath = dstImgFolder + File.separator + imagePDFName;
  29. }
  30. if (createDirectory(imgFolderPath)) {
  31. pdDocument = PDDocument.load(file);
  32. PDFRenderer renderer = new PDFRenderer(pdDocument);
  33. /* dpi越大转换后越清晰,相对转换速度越慢 */
  34. PdfReader reader = new PdfReader(PdfFilePath);
  35. int pages = reader.getNumberOfPages();
  36. StringBuffer imgFilePath = null;
  37. for (int i = 0; i < pages; i++) {
  38. String imgFilePathPrefix = imgFolderPath + File.separator + imagePDFName;
  39. imgFilePath = new StringBuffer();
  40. imgFilePath.append(imgFilePathPrefix);
  41. imgFilePath.append("_");
  42. imgFilePath.append(String.valueOf(i + 1));
  43. imgFilePath.append(".png");
  44. File dstFile = new File(imgFilePath.toString());
  45. BufferedImage image = renderer.renderImageWithDPI(i, 300);
  46. ImageIO.write(image, "png", dstFile);
  47. System.out.println("正在转码,请稍后....");
  48. }
  49. System.out.println("PDF文档转PNG图片成功!");
  50. } else {
  51. System.out.println("PDF文档转PNG图片失败:" + "创建" + imgFolderPath + "失败");
  52. }
  53. } catch (IOException e) {
  54. e.printStackTrace();
  55. }
  56. }
  57. /**
  58. * @param file pdf文件
  59. * @param dstImgFolder
  60. */
  61. public static void pdf2ImageByFile(File file, String dstImgFolder) {
  62. PDDocument pdDocument;
  63. try {
  64. String imgPDFPath = file.getParent();
  65. int dot = file.getName().lastIndexOf('.');
  66. String imagePDFName = file.getName().substring(0, dot); // 获取图片文件名
  67. String imgFolderPath = null;
  68. if (dstImgFolder.equals("")) {
  69. imgFolderPath = imgPDFPath + File.separator + imagePDFName;// 获取图片存放的文件夹路径
  70. } else {
  71. imgFolderPath = dstImgFolder + File.separator + imagePDFName;
  72. }
  73. if (createDirectory(imgFolderPath)) {
  74. pdDocument = PDDocument.load(file);
  75. PDFRenderer renderer = new PDFRenderer(pdDocument);
  76. /* dpi越大转换后越清晰,相对转换速度越慢 */
  77. PdfReader reader = new PdfReader(file.getPath());
  78. int pages = reader.getNumberOfPages();
  79. StringBuffer imgFilePath = null;
  80. for (int i = 0; i < pages; i++) {
  81. String imgFilePathPrefix = imgFolderPath + File.separator + imagePDFName;
  82. imgFilePath = new StringBuffer();
  83. imgFilePath.append(imgFilePathPrefix);
  84. imgFilePath.append("_");
  85. imgFilePath.append(String.valueOf(i + 1));
  86. imgFilePath.append(".png");
  87. File dstFile = new File(imgFilePath.toString());
  88. BufferedImage image = renderer.renderImageWithDPI(i, 300);
  89. ImageIO.write(image, "png", dstFile);
  90. System.out.println("正在转码,请稍后....");
  91. }
  92. System.out.println("PDF文档转PNG图片成功!");
  93. } else {
  94. System.out.println("PDF文档转PNG图片失败:" + "创建" + imgFolderPath + "失败");
  95. }
  96. } catch (Exception e) {
  97. e.printStackTrace();
  98. }
  99. }
  100. private static boolean createDirectory(String folder) {
  101. File dir = new File(folder);
  102. if (dir.exists()) {
  103. return true;
  104. } else {
  105. return dir.mkdirs();
  106. }
  107. }
  108. }

发表评论

表情:
评论列表 (有 0 条评论,238人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java实现PDF图片

    注意事项:转图片后需仔细核对,因PDF内的字体可能不是宋体等最常见字体,转图片后可能出现中文乱码现象,需要查看原PDF文件中对应字体,下载后安装在本地或服务器上。 需引入ja