Mengidentifikasi nama bidang formulir

Aspose.PDF for .NET menyediakan kemampuan untuk membuat, mengedit, dan mengisi formulir Pdf yang sudah dibuat. Aspose.Pdf.Facades namespace berisi kelas Form, yang memiliki fungsi bernama FillField dan mengambil dua argumen yaitu nama bidang dan nilai bidang. Jadi, untuk mengisi bidang formulir, Anda harus mengetahui nama bidang formulir yang tepat.

Detail implementasi

Kami sering menemui skenario di mana kami perlu mengisi formulir yang dibuat di beberapa alat yaitu Adobe Designer, dan kami tidak yakin tentang nama bidang formulir. Jadi, untuk mengisi bidang formulir, pertama-tama kami perlu membaca nama semua bidang formulir Pdf. Kelas Form menyediakan properti bernama FieldNames yang mengembalikan semua nama bidang dan mengembalikan null jika PDF tidak mengandung bidang apa pun. Namun, saat menggunakan properti ini, kami mendapatkan nama semua bidang dalam formulir PDF dan kami mungkin tidak yakin nama mana yang sesuai dengan bidang mana di formulir.

Sebagai solusi untuk masalah ini, kami akan menggunakan atribut penampilan dari setiap bidang. Kelas Form memiliki fungsi bernama GetFieldFacade yang mengembalikan atribut, termasuk lokasi, warna, gaya batas, font, item daftar, dan sebagainya. Untuk menyimpan nilai-nilai ini, kami perlu menggunakan kelas FormFieldFacade, yang digunakan untuk mencatat atribut visual dari bidang. Setelah kami memiliki atribut ini, kami dapat menambahkan bidang teks di bawah setiap bidang yang akan menampilkan nama bidang.

Dalam namespace Aspose.Pdf.Facades kami memiliki kelas bernama FormEditor yang menyediakan kemampuan untuk memanipulasi formulir PDF. Buka formulir pdf; tambahkan bidang teks di bawah setiap bidang formulir yang ada dan simpan formulir Pdf dengan nama baru.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void IdentifyFormFieldsNames()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdfFacades_TechnicalArticles();
    // First a input pdf file should be assigned
    var form = new Aspose.Pdf.Facades.Form(dataDir + "FilledForm.pdf");
    // Get all field names
    var allfields = form.FieldNames;
    // Create an array which will hold the location coordinates of Form fields
    var box = new System.Drawing.Rectangle[allfields.Length];
    for (int i = 0; i < allfields.Length; i++)
    {
        // Get the appearance attributes of each field, consequtively
        var facade = form.GetFieldFacade(allfields[i]);
        // Box in FormFieldFacade class holds field's location
        box[i] = facade.Box;
    }
    // Save PDF document
    form.Save(dataDir + "IdentifyFormFields_1_out.pdf");

    // Create PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "FilledForm - 2.pdf"))
    {
        // Now we need to add a textfield just upon the original one
        using (var editor = new Aspose.Pdf.Facades.FormEditor(document))
        {
            for (int i = 0; i < allfields.Length; i++)
            {
                // Add text field beneath every existing form field
                editor.AddField(Aspose.Pdf.Facades.FieldType.Text, 
                "TextField" + i, allfields[i], 1, 
                box[i].Left, box[i].Top, box[i].Left + 50, box[i].Top + 10);
            }
            // Save PDF document
            editor.Save(dataDir + "IdentifyFormFields_out.pdf");
        }
    }
}