使用iText阅读pdf

我在java中使用iText读取pdf文件时遇到问题。 我只能读一页,但是当我转到第二页时,它会给出exception。我想阅读任何pdf文件的所有页面。

PdfTextExtractor parser =new PdfTextExtractor(new PdfReader("C:/Text.pdf")); parser.getTextFromPage(3); 

我正在使用这些行,在第二行给出exception。

  1. 尝试更改文件位置。 有时OS不允许其他应用程序从某些系统驱动器读取文件。 把它放在D:等等。当我从桌面读取文件时,我在Vista中遇到了这个问题。

  2. 事实上,我在我的一个PDF上运行了相同的两行代码,它确实打印了文本。 还要确保PDF中有足够的页面。 (3页或更多页)或尝试使用parser.getTextFromPage(1)等从其他页面获取内容。

当你说一页时,你的意思是第一页吗? 你可能错误地索引页面? 没有任何更多信息,它可能是任何东西。

您是否正在为每个操作重新构建解析器和读取器? 你可以这样做,但效率不高(创建一个新的PdfReader会产生很多开销)。

 import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.parser.PdfTextExtractor; /** * This class is used to read an existing * pdf file using iText jar. * @author javawithease */ public class PDFReadExample { public static void main(String args[]){ try { //Create PdfReader instance. PdfReader pdfReader = new PdfReader("D:\\testFile.pdf"); //Get the number of pages in pdf. int pages = pdfReader.getNumberOfPages(); //Iterate the pdf through pages. for(int i=1; i<=pages; i++) { //Extract the page content using PdfTextExtractor. String pageContent = PdfTextExtractor.getTextFromPage(pdfReader, i); //Print the page content on console. System.out.println("Content on Page " + i + ": " + pageContent); } //Close the PdfReader. pdfReader.close(); } catch (Exception e) { e.printStackTrace(); } } }