AcroForm の変更

フォームの保守は、フィールドレベルの編集とフォーム関連ページリソースのクリーンアップの両方を含むことがよくあります。

埋め込みフォームリソースのテキストのクリア

フォームオブジェクト自体を削除せずに、タイプライターフォームの内容を空にする必要がある場合は、この例を使用してください。

  1. ソース PDF の Document を開いてください。
  2. ページのフォームリソースを反復処理し、タイプライターフォームを検索してください。
  3. 吸収されたテキストフラグメントをクリアし、ドキュメントを保存してください。
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());
    }
}

テキスト フィールドの長さ制限の設定

テキスト フィールドが限定された文字数のみを受け付ける場合は、この例を使用してください。

  1. FormEditor オブジェクトを作成し、ソース PDF にバインドしてください。
  2. 対象フィールドの最大長さを設定してください。
  3. 更新されたドキュメントを保存してください。
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();
    }
}

テキストフィールドの長さ制限の取得

テキストフィールドの現在の最大長さを確認する必要がある場合は、この例を使用してください。

  1. ソース PDF の Document を開いてください。
  2. フォームコレクションから対象フィールドにアクセスしてください。
  3. TextBoxField から制限値を読み取り、出力してください。
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());
        }
    }
}

Form フィールドのフォントの変更

既存のテキストフィールドに別のフォントまたは外観を使用する必要がある場合に、この例を使用してください。

  1. ソース PDF の Document を開いてください。
  2. ターゲットの TextBoxField にアクセスし、新しいデフォルトの外観を設定してください。
  3. 更新された PDF を保存してください。
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());
    }
}

名前でフォームフィールドの削除

特定のフィールドを AcroForm から削除する必要がある場合に、この例を使用してください。

  1. ソース PDF の Document を開いてください。
  2. 名前でフォームから対象フィールドを削除してください。
  3. 更新されたドキュメントを保存してください。
public static void deleteFormField(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.getForm().delete("First Name");
        document.save(outputFile.toString());
    }
}