使用iText一次解析所有PDF页面

时间:2015-06-03 18:12:19

标签: java pdf itext

我正在尝试使用" iText"解析pdf文件。我想要实现的是一次解析所有页面。

try {
            PdfReader reader = new PdfReader("D:\\hl_sv\\L04MF.pdf");
            int pages = reader.getNumberOfPages();

            String content = "";
            for (int i = 0; i <= pages; i++) {
                    System.out.println("============PAGE NUMBER " + i + "=============" );
                    content = content + " " +      PdfTextExtractor.getTextFromPage(reader, i);

            }
            System.out.println(content);

    } 

我收到此错误:

Exception in thread "main" java.lang.NullPointerException
    at com.itextpdf.text.pdf.parser.PdfReaderContentParser.processContent(PdfReaderContentParser.java:77)
    at com.itextpdf.text.pdf.parser.PdfTextExtractor.getTextFromPage(PdfTextExtractor.java:74)
    at com.itextpdf.text.pdf.parser.PdfTextExtractor.getTextFromPage(PdfTextExtractor.java:89)
    at com.pdf.PDF.main(PDF.java:18)

我面临的其他问题是-连字符被解析为?个问号。我该如何解决这个问题?

我感谢任何帮助。

修改 它对我有用,但我仍然无法解决连字符错误。

try {
            PdfReader reader = new PdfReader("D:\\hl_sv\\L04MF.pdf");
            int pages = reader.getNumberOfPages();

            for(int i = 1; i<= pages; i++) {
                    System.out.println("============PAGE NUMBER " + i + "=============" );
                    String line = PdfTextExtractor.getTextFromPage(reader,i);
                    System.out.println(line);
                }
    }

1 个答案:

答案 0 :(得分:1)

public static String extractPdfText() throws IOException {
  PdfReader pdfReader = new PdfReader("/path/to/file/myfile.pdf");
  int pages = pdfReader.getNumberOfPages();
  String pdfText = "";
  for (int ctr = 1; ctr < pages + 1; ctr++) {
    pdfText += PdfTextExtractor.getTextFromPage(pdfReader, ctr); // Page number cannot be 0 or will throw NPE
  }
  pdfReader.close();
  return pdfText;
}