[Java 实现pdf转excel ]

矫情吗;* 2023-10-12 14:24 102阅读 0赞

目录

前言:

Apache POI和pdfbox库实现pdf转excel的详细代码实现:

综上所述:

Java实现iText pdf转excel详细代码实现

综上所述:

依赖:


前言:

笔记而已

Apache POI和pdfbox库实现pdf转excel的详细代码实现:

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.IOException;
  4. import org.apache.pdfbox.pdmodel.PDDocument;
  5. import org.apache.pdfbox.text.PDFTextStripper;
  6. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  7. import org.apache.poi.ss.usermodel.Cell;
  8. import org.apache.poi.ss.usermodel.Row;
  9. import org.apache.poi.ss.usermodel.Sheet;
  10. import org.apache.poi.ss.usermodel.Workbook;
  11. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  12. public class PdfToExcelConverter {
  13. public static void main(String[] args) {
  14. String pdfFilePath = "sample.pdf";
  15. String excelFilePath = "output.xlsx";
  16. try {
  17. String pdfText = getPdfText(pdfFilePath);
  18. writeTextToExcel(pdfText, excelFilePath);
  19. System.out.println("PDF successfully converted to Excel!");
  20. } catch (IOException e) {
  21. e.printStackTrace();
  22. }
  23. }
  24. private static String getPdfText(String pdfFilePath) throws IOException {
  25. PDDocument pdfDoc = PDDocument.load(new FileInputStream(new File(pdfFilePath)));
  26. PDFTextStripper stripper = new PDFTextStripper();
  27. String pdfText = stripper.getText(pdfDoc);
  28. pdfDoc.close();
  29. return pdfText;
  30. }
  31. private static void writeTextToExcel(String pdfText, String excelFilePath) throws IOException {
  32. boolean isXlsx = excelFilePath.endsWith(".xlsx");
  33. Workbook workbook = isXlsx ? new XSSFWorkbook() : new HSSFWorkbook();
  34. Sheet sheet = workbook.createSheet("Sheet1");
  35. String[] lines = pdfText.split("\n");
  36. int rowIndex = 0;
  37. for (String line : lines) {
  38. Row row = sheet.createRow(rowIndex++);
  39. String[] cells = line.split(" ");
  40. int cellIndex = 0;
  41. for (String cellValue : cells) {
  42. Cell cell = row.createCell(cellIndex++);
  43. cell.setCellValue(cellValue);
  44. }
  45. }
  46. workbook.write(new File(excelFilePath));
  47. workbook.close();
  48. }
  49. }

综上所述:

  • 通过pdfbox库获取pdf文件的文本内容。
  • 使用Apache POI创建一个Excel工作簿对象和一个工作表对象。
  • 将pdf文本内容逐行添加到工作表中的单元格中。
  • 将工作簿写入Excel文件中。

Java实现iText pdf转excel详细代码实现

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import com.itextpdf.text.pdf.PdfReader;
  8. import com.itextpdf.text.pdf.parser.PdfTextExtractor;
  9. import com.itextpdf.text.pdf.parser.Vector;
  10. import com.itextpdf.text.pdf.parser.VectorParserListener;
  11. import com.itextpdf.text.pdf.parser.VectorRenderFilter;
  12. import com.itextpdf.text.pdf.parser.TextRenderInfo;
  13. import com.itextpdf.text.pdf.parser.RenderFilter;
  14. import com.itextpdf.text.Rectangle;
  15. import com.itextpdf.text.pdf.parser.PdfContentStreamProcessor;
  16. import com.itextpdf.text.pdf.parser.PdfRenderListener;
  17. import com.itextpdf.text.pdf.parser.PdfTextExtractor;
  18. import com.itextpdf.text.pdf.parser.RenderListener;
  19. import com.itextpdf.text.pdf.parser.TextRenderInfo;
  20. import com.itextpdf.text.pdf.parser.TextRenderInfo;
  21. import com.itextpdf.text.pdf.parser.Vector;
  22. import org.apache.poi.ss.usermodel.Cell;
  23. import org.apache.poi.ss.usermodel.Row;
  24. import org.apache.poi.ss.usermodel.Sheet;
  25. import org.apache.poi.ss.usermodel.Workbook;
  26. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  27. public class PdfToExcelConverter {
  28. public static void main(String[] args) {
  29. try {
  30. String pdfFilePath = "sample.pdf";
  31. String excelFilePath = "output.xlsx";
  32. // 读取PDF文件
  33. PdfReader reader = new PdfReader(new FileInputStream(pdfFilePath));
  34. PdfContentStreamProcessor processor = new PdfContentStreamProcessor(new RenderListener() {
  35. private List<String> lines = new ArrayList<>();
  36. private String currentLine = "";
  37. private boolean newLine = false;
  38. @Override
  39. public void renderText(TextRenderInfo renderInfo) {
  40. String text = renderInfo.getText();
  41. Vector baseline = renderInfo.getBaseline().getStartPoint();
  42. float x = baseline.get(Vector.I1);
  43. float y = baseline.get(Vector.I2);
  44. if (newLine || currentLine.isEmpty()) {
  45. currentLine = text;
  46. newLine = false;
  47. } else {
  48. currentLine += " " + text;
  49. }
  50. if (text.endsWith("\n")) {
  51. currentLine = currentLine.trim();
  52. if (!currentLine.isEmpty()) {
  53. lines.add(currentLine);
  54. }
  55. currentLine = "";
  56. newLine = true;
  57. }
  58. }
  59. @Override
  60. public void renderImage(ImageRenderInfo renderInfo) {
  61. }
  62. @Override
  63. public void endTextBlock() {
  64. }
  65. @Override
  66. public void beginTextBlock() {
  67. }
  68. });
  69. for (int i = 1; i <= reader.getNumberOfPages(); i++) {
  70. processor.processContent(reader.getPageContent(i), reader.getPageResources(i));
  71. }
  72. reader.close();
  73. // 将读取的内容写入Excel文件
  74. Workbook workbook = new XSSFWorkbook();
  75. Sheet sheet = workbook.createSheet();
  76. int rowIndex = 0;
  77. for (String line : lines) {
  78. Row row = sheet.createRow(rowIndex++);
  79. String[] cells = line.split(" ");
  80. int cellIndex = 0;
  81. for (String cellValue : cells) {
  82. Cell cell = row.createCell(cellIndex++);
  83. cell.setCellValue(cellValue);
  84. }
  85. }
  86. FileOutputStream outputStream = new FileOutputStream(new File(excelFilePath));
  87. workbook.write(outputStream);
  88. workbook.close();
  89. System.out.println("PDF successfully converted to Excel!");
  90. } catch (IOException e) {
  91. e.printStackTrace();
  92. }
  93. }
  94. }

综上所述:

  • 使用iText库的 PdfReader 类读取PDF文件,使用 PdfContentStreamProcessor 类解析PDF内容,并将其转换为字符串。
  • 将解析得到的字符串逐行添加到Excel工作表中的单元格中。
  • 将工作簿写入Excel文件中。

需要注意的是,iText库的解析功能支持多种PDF格式和语言,也可以处理文本、表格、图像、链接等内容。因此,使用iText库可以更加灵活地处理PDF文件的内容。

依赖:

  1. 在你的项目中使用iText库,需要在你的项目中引入以下依赖: 根据版本情况来
  2. <dependency>
  3. <groupId>com.itextpdf</groupId>
  4. <artifactId>itextpdf</artifactId>
  5. <version>5.5.13</version>
  6. </dependency>
  7. 在你的项目中使用Apache POI库,需要在你的项目中引入以下依赖:
  8. <dependency>
  9. <groupId>org.apache.poi</groupId>
  10. <artifactId>poi</artifactId>
  11. <version>5.0.0</version>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.apache.poi</groupId>
  15. <artifactId>poi-ooxml</artifactId>
  16. <version>5.0.0</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.apache.poi</groupId>
  20. <artifactId>poi-ooxml-schemas</artifactId>
  21. <version>5.0.0</version>
  22. </dependency>

发表评论

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

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

相关阅读

    相关 itext excelpdf

    要将iText和Excel文件转换为PDF,需要使用iText库来读取Excel文件,并使用该库生成PDF文档。以下是一些示例代码,展示了如何使用iText和Apache PO

    相关 Java 实现wordpdf

    word转pdf我在网上转了一天,始终找不到适合自己的!! 我擦!我太难了,写此博客分享给你们,也以免我忘记 我用的是jacob一个jar包就可以了 步骤: 1.

    相关 ExcelPDF

    本文将介绍在Java程序中如何将Excel工作簿转为PDF文档的,包括: 将整个工作簿转为PDF 将指定工作表转为PDF 使用工具:Free Spire.XLS

    相关 Java实现PDF图片

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