У меня есть несколько вопросов о парсинге pdf и как:
- какова цель использования
PDDocument.loadNonSeq
метод, который включает в себя временный файл?
- У меня есть большой PDF-файл, и мне нужно его разобрать и получить текстовое содержимое. Я использую
PDDocument.load()
, а затем PDFTextStripper для извлечения данных страница за страницей (у pdfstripper естьsetStartPage(n)
иsetEndPage(n)
, где n=n+1 каждый цикл страницы). Является ли более эффективным для памяти использование loadNonSeq вместо загрузки?
Например
File pdfFile = new File("mypdf.pdf");
File tmp_file = new File("result.tmp");
PDDocument doc = PDDocument.loadNonSeq(pdfFile, new RandomAccessFile(tmp_file, READ_WRITE));
int index=1;
int numpages = doc.getNumberOfPages();
for (int index = 1; index <= numpages; index++){
PDFTextStripper stripper = new PDFTextStripper();
Writer destination = new StringWriter();
String xml="";
stripper.setStartPage(index);
stripper.setEndPage(index);
stripper.writeText(this.doc, destination);
.... //filtering text and then convert it in xml
}
Является ли этот код выше правильного использования loadNonSeq и является ли хорошей практикой чтение PDF-страницы за страницей без большого объема памяти? Я использую чтение страницы за страницей, потому что мне нужно писать текст в XML, используя память DOM (используя метод зачистки, я решаю создать XML для каждой страницы)