Ekstrak data dari AcroForm

Ekstrak bidang formulir dari dokumen PDF

Aspose.PDF untuk Java tidak hanya memungkinkan Anda membuat dan mengisi bidang formulir, tetapi juga memudahkan untuk mengekstrak data bidang formulir atau informasi bidang formulir dari file PDF.

Misalkan kita tidak mengetahui nama-nama bidang formulir terlebih dahulu. Maka kita harus mengiterasi setiap halaman di PDF untuk mengekstrak informasi tentang semua AcroForm di PDF serta nilai dari bidang formulir. Untuk mendapatkan akses ke formulir kita perlu menggunakan metode getForm.

public static void ExtractFormFields() {
    String path= "/home/admin/pdf-examples/Samples/StudentInfoFormElectronic.pdf";
    com.aspose.pdf.Document document = new com.aspose.pdf.Document(path);
    // Dapatkan nilai dari semua bidang
    for (com.aspose.pdf.Field formField : document.getForm().getFields()) {
        System.out.println("Nama Bidang :" + formField.getPartialName());
        System.out.println("Nilai : " + formField.getValue());
    }
}

Jika Anda mengetahui nama dari field formulir yang ingin Anda ekstrak nilainya, maka Anda dapat menggunakan indexer dalam koleksi Documents.Form untuk dengan cepat mengambil data ini.

Mengambil nilai field formulir berdasarkan judul

Properti Value dari field formulir memungkinkan Anda untuk mendapatkan nilai dari field tertentu. Untuk mendapatkan nilainya, dapatkan field formulir dari Dokumen objek koleksi field formulir. Contoh ini memilih TextBoxField dan mengambil nilainya menggunakan metode getValue.

public static void ExtractFormDataByName() {
    String fileName = _dataDir+"/StudentInfoFormElectronic.pdf";
    com.aspose.pdf.Document document = new com.aspose.pdf.Document(fileName);        
    com.aspose.pdf.TextBoxField textBoxField1 = (com.aspose.pdf.TextBoxField)document.getForm().get("Last Name");

    System.out.println("Last Name :" + textBoxField1.getValue());
}

Ekstrak bidang formulir dari dokumen PDF ke JSON

Untuk mengekspor data formulir ke JSON, kami merekomendasikan menggunakan pustaka pihak ketiga seperti Gson. Cuplikan berikut menunjukkan cara mengekspor Name dan Value ke JSON:

public static void ExtractFormFieldsToJson() {
    String path = "/home/admin/pdf-examples/Samples/StudentInfoFormElectronic.pdf";
    com.aspose.pdf.Document document = new com.aspose.pdf.Document(path);

    java.util.List<FormElement> formData = new java.util.ArrayList<FormElement>();
    for (com.aspose.pdf.Field formField : document.getForm().getFields()) {
        formData.add(new FormElement(formField.getPartialName(), formField.getValue()));
    }

    Gson gson = new Gson();
    String jsonString = gson.toJson(formData);
    System.out.println(jsonString);
}

Dalam contoh ini kami menggunakan kelas tambahan

public class FormElement {
    public FormElement(String partialName, String Value) {
        this.Name = partialName;
        this.Value = Value;
    }
    public String Name;
    public String Value;
}

Ekstrak Data ke XML dari File PDF

Kelas Form memungkinkan Anda untuk mengekspor data ke file XML dari file PDF menggunakan metode ExportXml. Untuk mengekspor data ke XML, Anda perlu membuat objek dari kelas Form dan kemudian memanggil metode ExportXml menggunakan objek FileStream. Akhirnya, Anda dapat menutup objek FileStream dan membuang objek Form. Cuplikan kode berikut menunjukkan cara mengekspor data ke file XML.

public static void ExtractFormFieldsToXML() {

    String dataDir = "/home/admin/pdf-examples/Samples/StudentInfoFormElectronic.pdf";

    // Buka dokumen
    com.aspose.pdf.facades.Form form = new com.aspose.pdf.facades.Form();
    form.bindPdf(dataDir + "input.pdf");

    try {
        // Buat file XML.
        FileOutputStream xmlOutputStream;

        xmlOutputStream = new FileOutputStream(dataDir + "input.xml");
        // Ekspor data
        form.exportXml(xmlOutputStream);

        // Tutup file stream
        xmlOutputStream.close();

    } catch (IOException e) {

        e.printStackTrace();
    }

    // Tutup dokumen
    form.dispose();
    ;
}

Ekspor Data ke FDF dari File PDF

Untuk mengekspor data formulir PDF ke file XFDF, kita dapat menggunakan metode exportFdf dalam kelas Form.

Harap dicatat, bahwa ini adalah kelas dari com.aspose.pdf.facades. Meskipun namanya mirip, kelas ini memiliki tujuan yang sedikit berbeda.

Untuk mengekspor data ke FDF, Anda perlu membuat objek dari kelas Form dan kemudian memanggil metode exportXfdf menggunakan objek OutputStream. Cuplikan kode berikut menunjukkan kepada Anda bagaimana mengekspor data ke file XFDF.

 public static void ExtractFormExportFDF() {
        String pdfFileName = Paths.get(_dataDir, "StudentInfoFormElectronic.pdf").toString();
        String fdfFileName = Paths.get(_dataDir, "student.fdf").toString();
        com.aspose.pdf.facades.Form form = new com.aspose.pdf.facades.Form(pdfFileName);

        OutputStream fdfOutputStream;
        try {

            fdfOutputStream = new FileOutputStream(fdfFileName);

            // Ekspor data
            form.exportFdf(fdfOutputStream);

            // Tutup file stream
            fdfOutputStream.close();

        } catch (IOException e) {
            // TODO: tangani pengecualian
            e.printStackTrace();
        }

    }

Ekspor Data ke XFDF dari File PDF

Untuk mengekspor data formulir PDF ke file XFDF, kita dapat menggunakan metode exportXfdf dalam kelas Form.

Untuk mengekspor data ke XFDF, Anda perlu membuat objek dari kelas Form dan kemudian memanggil metode exportXfdf menggunakan objek OutputStream. Cuplikan kode berikut menunjukkan cara mengekspor data ke file XFDF.

public static void ExtractFormExportXFDF() {
        String pdfFileName = Paths.get(_dataDir, "StudentInfoFormElectronic.pdf").toString();
        String fdfFileName = Paths.get(_dataDir, "student.xfdf").toString();
        com.aspose.pdf.facades.Form form = new com.aspose.pdf.facades.Form(pdfFileName);

        OutputStream fdfOutputStream;
        try {

            fdfOutputStream = new FileOutputStream(fdfFileName);

            // Ekspor data
            form.exportXfdf(fdfOutputStream);

            // Tutup file stream
            fdfOutputStream.close();

        } catch (IOException e) {
            // TODO: tangani pengecualian
            e.printStackTrace();
        }
    }