2013-06-27 3 views
2

Я пытаюсь заполнить форму PDF с помощью JAVA, но когда я попытался получить поля, используя приведенный ниже код, список пуст.Невозможно прочитать PDF-файл с использованием PDFBOX

PDDocument pdDoc = PDDocument.load(filename); 
PDAcroForm pdform = pdDoc.getDocumentCatalog().getAcroForm(); 
List<PDField> field = pdform.getFields(); 

Затем я попытался прочитать файл, используя PDFStripper

PDFTextStripper stripper = new PDFTextStripper(); 
System.out.println(stripper.getText(pdDoc)); 

и Ouput следующим образом

«Пожалуйста, подождите ...

Если это сообщение не в конечном итоге заменить по правильному содержимому документа, ваш PDF-файл может не отображать этот тип документа.

Вы можете перейти на последнюю версию Adobe Reader для Windows®, Mac или Linux® на , посетив http://www.adobe.com/go/reader_download.

Для получения дополнительной информации об Adobe Reader посетите http://www.adobe.com/go/acrreader.

Windows является зарегистрированным товарным знаком или товарным знаком корпорации Microsoft в США и/или других странах. Mac является товарным знаком Apple Inc., зарегистрированным в США и других странах. Linux является зарегистрированным товарным знаком Linus Torvalds в США и других странах . »

Но я могу открыть файл вручную и заполнить поля. Я также пробовал использовать другие инструменты, такие как iText. Я не был в состоянии получить поля. Как я могу решить эту проблему?

ответ

0

может быть, это слишком поздно, чтобы ответить, но в любом случае, почему нет. Вы можете получить пустой список, если файл PDF имеет структуру РФА.

PDDocument pdDoc = PDDocument.load(filename); 
PDAcroForm pdform = pdDoc.getDocumentCatalog().getAcroForm(); 
List<PDField> field = pdform.getFields(); 

Используйте эти строки кода, чтобы начать работу с pdf:

PDXFA xfa = pdform.getXFA(); 
Document xfaDocument = xfa.getDocument(); 
NodeList elements = xfaDocument.getElementsByTagName("SomeElement"); 
+0

Как вы можете проверить, так ли это или нет? – kutschkem

+0

Используйте следующий оператор if: 'if (pdform.getFields(). IsEmpty) {// Случай XFA} else {// Случай AcroForm}' – Paul