Modificando AcroForm

El mantenimiento de Form a menudo implica tanto ediciones a nivel de campo como la limpieza de recursos de página relacionados con Form.

Eliminar texto en recursos de form incrustados

Utilice este ejemplo cuando el contenido de form Typewriter deba vaciarse sin eliminar los objetos de form en sí.

  1. Abra el PDF de origen Document.
  2. Itere a través de los recursos de formulario de la página y localice formularios Typewriter.
  3. Eliminar los fragmentos de texto absorbidos y guarde el documento.
public static void clearTextInForm(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        for (XForm form : document.getPages().get_Item(1).getResources().getForms()) {
            if ("Typewriter".equals(form.getIT()) && "Form".equals(form.getSubtype())) {
                TextFragmentAbsorber absorber = new TextFragmentAbsorber();
                absorber.visit(form);

                for (TextFragment fragment : absorber.getTextFragments()) {
                    fragment.setText("");
                }
            }
        }
        document.save(outputFile.toString());
    }
}

Establecer un límite de longitud para el campo de texto

Utilice este ejemplo cuando un campo de texto debe aceptar solo un número limitado de caracteres.

  1. Cree una fachada FormEditor y vincule el PDF de origen.
  2. Establezca la longitud máxima para el campo de destino.
  3. Guarde el documento actualizado.
public static void setFieldLimit(Path inputFile, Path outputFile) {
    FormEditor form = new FormEditor();
    form.bindPdf(inputFile.toString());
    try {
        form.setFieldLimit("First Name", 15);
        form.save(outputFile.toString());
    } finally {
        form.close();
    }
}

Obtener un límite de longitud para un campo de texto

Utilice este ejemplo cuando necesite inspeccionar la longitud máxima actual de un campo de texto.

  1. Abra el PDF de origen Document.
  2. Acceda al campo objetivo de la colección de formularios.
  3. Lea el límite desde el TextBoxField y genérelo.
public static void getFieldLimit(Path inputFile) {
    try (Document document = new Document(inputFile.toString())) {
        Field field = document.getForm().getFields()[0];
        if (field instanceof TextBoxField textBoxField) {
            System.out.println("Limit: " + textBoxField.getMaxLen());
        }
    }
}

Cambiar la fuente de un campo de formulario

Utilice este ejemplo cuando un campo de texto existente deba usar una fuente o apariencia diferente.

  1. Abra el PDF de origen Document.
  2. Acceda al objetivo TextBoxField y establezca una nueva apariencia predeterminada.
  3. Guarde el PDF actualizado.
public static void setFormFieldFont(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        Field field = document.getForm().getFields()[0];
        if (field instanceof TextBoxField textBoxField) {
            textBoxField.setDefaultAppearance(new DefaultAppearance(
                    FontRepository.findFont("Calibri"), 10, com.aspose.pdf.Color.getBlack().toRgb()));
        }

        document.save(outputFile.toString());
    }
}

Eliminar un campo de formulario por nombre

Utilice este ejemplo cuando se deba eliminar un campo específico del AcroForm.

  1. Abra el PDF de origen Document.
  2. Elimine el campo objetivo del formulario por su nombre.
  3. Guarde el documento actualizado.
public static void deleteFormField(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.getForm().delete("First Name");
        document.save(outputFile.toString());
    }
}