使用 iText 阅读 pdf

问题描述 投票:0回答:4

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

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

我正在使用这些行,第二行给出了异常。

java itext
4个回答
2
投票
  1. 尝试更改文件位置。有时操作系统不允许其他应用程序从某些系统驱动器读取文件。放在 D: 等某处。我在 Vista 中从桌面读取文件时遇到这个问题。

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


0
投票

当您说一页时,您是指第一页吗?您可能错误地索引了页面?如果没有更多信息,它可能是任何东西。


0
投票

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


0
投票
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();
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.