Modificar AcroForm

A manutenção de Form frequentemente envolve tanto edições de nível de campo quanto a limpeza de recursos de página relacionados ao Form.

Limpar texto em recursos de Form incorporados

Use este exemplo quando o conteúdo de Form Typewriter deve ser esvaziado sem remover os próprios objetos do Form.

  1. Abra o PDF de origem em um objeto Document.
  2. Itere pelos recursos de formulário da página e localize formulários Typewriter.
  3. Limpe os fragmentos de texto absorvidos e salve o 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());
    }
}

Definir um limite de comprimento para o campo de texto

Use este exemplo quando um campo de texto deve aceitar apenas um número limitado de caracteres.

  1. Crie um FormEditor fachada e vincule o PDF de origem.
  2. Defina o comprimento máximo para o campo de destino.
  3. Salve o documento atualizado.
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();
    }
}

Obter um limite de comprimento de campo de texto

Use este exemplo quando precisar inspecionar o comprimento máximo atual de um campo de texto.

  1. Abra o PDF de origem em um objeto Document.
  2. Acesse o campo alvo a partir da coleção de formulários.
  3. Leia o limite a partir do TextBoxField e exiba-o.
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());
        }
    }
}

Alterar a fonte de um campo de formulário

Use este exemplo quando um campo de texto existente deve usar uma fonte ou aparência diferente.

  1. Abra o PDF de origem em um objeto Document.
  2. Acesse o alvo TextBoxField e defina uma nova aparência padrão.
  3. Salve o PDF atualizado.
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());
    }
}

Excluir um campo de formulário pelo nome

Use este exemplo quando um campo específico deve ser removido do AcroForm.

  1. Abra o PDF de origem em um objeto Document.
  2. Exclua o campo de destino do formulário pelo nome.
  3. Salve o documento atualizado.
public static void deleteFormField(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.getForm().delete("First Name");
        document.save(outputFile.toString());
    }
}