package com.sptech.pdfparsed;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.common.PDMetadata;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.pdmodel.interactive.form.PDCheckbox;
import org.apache.pdfbox.pdmodel.interactive.form.PDChoiceField;
import org.apache.pdfbox.pdmodel.interactive.form.PDTextbox;

import java.io.File;
import java.util.List;

public class HelloPDFBox {
    public static void listFields(PDDocument doc) throws Exception {

        PDDocumentCatalog catalog = doc.getDocumentCatalog();
        PDMetadata pdMetadata = catalog.getMetadata();
        PDAcroForm form = catalog.getAcroForm();
        List fields = form.getFields();

        System.out.println("Fields " + fields.get(0).getClass());

        for (Object field : fields) {

            if (field instanceof PDTextbox) {
                PDTextbox pdTextbox = (PDTextbox) field;
                System.out.println("PDTextBox " + pdTextbox.getFullyQualifiedName() + " " + pdTextbox.getValue());
            } else if (field instanceof PDChoiceField) {
                PDChoiceField pdChoiceField = (PDChoiceField) field;
                System.out.println("PDChoice Field " + pdChoiceField.getFullyQualifiedName() + " " + pdChoiceField.getValue());
            } else if (field instanceof PDCheckbox) {
                PDCheckbox pdCheckbox = (PDCheckbox) field;
                System.out.println("PDCheckbox Field " + pdCheckbox.getFullyQualifiedName() + " " + pdCheckbox.getValue());
            } else {
                System.out.print(field);
                System.out.print(" = ");
                System.out.print(field.getClass());
                System.out.println();
            }
        }

    }

    public static void main(String[] args) throws Exception {
        if (args.length != 1) {
            System.out.println("Please specify fully qualified path of the PDF form");
            System.exit(-1);
        }
        String fileName = args[0];
        System.out.println("Parsing PDF Form at " + fileName);
        File file = new File(fileName);
        PDDocument doc = PDDocument.load(file);
        listFields(doc);
    }

}