JavaでiTextを使用してpdfファイルを読み取る際に問題が発生しています。1ページしか読めませんが、2ページ目に行くと例外が発生します.pdfファイルのすべてのページを読みたいです。
PdfTextExtractor parser =new PdfTextExtractor(new PdfReader("C:/Text.pdf"));
parser.getTextFromPage(3);
私はこれらの行を使用していますが、2 行目で例外が発生します。
ファイルの場所を変更してみてください。場合によっては、OS によって、他のアプリケーションによる一部のシステム ドライブからのファイルの読み取りが許可されないことがあります。D: などのどこかに置きます。デスクトップからファイルを読み取るときに、Vista でこの問題に直面します。
実際、PDF の 1 つで同じ 2 行のコードを実行したところ、テキストが印刷されました。また、PDF に十分なページがあることを確認してください。(3 ページ以上) または parser.getTextFromPage(1) などで他のページからコンテンツを取得してみてください。
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();
}
}
}