2017-01-31 13 views
0

を見つけることができません。pdfboxは、私が@ASuによってしばらく前示唆されたコードを使用していたシンボル

package pdf_form_filler; 

import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDDocumentCatalog; 
import org.apache.pdfbox.pdmodel.interactive.form.*; 
import java.io.File; 
import java.util.*; 

public class pdf_form_filler { 
public static void listFields(PDDocument doc) throws Exception { 
    PDDocumentCatalog catalog = doc.getDocumentCatalog(); 
    PDAcroForm form = catalog.getAcroForm(); 
    List<PDFieldTreeNode> fields = form.getFields(); 

    for(PDFieldTreeNode field: fields) { 
     Object value = field.getValue(); 
     String name = field.getFullyQualifiedName(); 
     System.out.print(name); 
     System.out.print(" = "); 
     System.out.print(value); 
     System.out.println(); 
    } 
} 

public static void main(String[] args) throws Exception { 
    File file = new File("test.pdf"); 
    PDDocument doc = PDDocument.load(file); 
    listFields(doc); 
} 

} 

をしかし、私はPDFieldTreeNodeのシンボルエラーを見つけることができません取得しておきます。私は最新のpdfbox(2.0.4)を持っていますが、とにかくそのクラスを見つけることはできません。私の代わりにPDFieldでこれを使用してみましたが、その後、すべての端末のフィールドを取得するには以降.getvalue

+1

これは 'List getFields()'なので、あなたのコードは動作しません。 'getValue()'のエラーが発生した場合は、そのエラーを教えてください(質問を編集してください)。スタックトレースの場合は、スタックトレースを含めます。 getFields()のjavadocも読んでください。ルートレベルのフィールドのみを提供します。 'getFieldIterator()'はあなたが望むものかもしれません。また、「ASu」でコードにリンクして修正することもできます。 –

+0

@ASuのコードは、私が投稿したのとまったく同じですが、見たい場合は:http://stackoverflow.com/a/27795227/4480374また、私はpdfboxを使っているので初めてですどのように使用するのか本当に分かりません。私はちょうど迅速かつ簡単にPDFからフォームデータを取得するために何かを探していた – User22

答えて

0

のエラーを取得し、このか:

Iterator<PDField> fieldIterator = catalog.getAcroForm(); 
while (fieldIterator.hasNext()) 
{ 
    PDField pdField = fieldIterator.next(); 
    // do stuff with the field 
} 

form.getFields()しかいないと非終端フィールド(すなわちフィールドを含むトップレベルのフィールドを、取得します値だが子供)。

さらに進んだ例がPrintFields.java exampleにあります。

+0

これは、PDFフォームのすべての編集可能なフィールドを返しますか? – User22

+0

すべての端末フィールドを返します。読み取り専用、チェックボックス、またはラジオボタンを含むものを含みます。特定のフィールドタイプを取得するには、 'instanceof'を使う必要があります。最高ののはあなたが試していることでしょう。 –

関連する問題