Удаление форм из PDF в Java

Эти примеры удаляют ресурсы форм со страницы, а не просто изменяют значения полей.

Удаление всех ресурсов формы со страницы

Используйте этот пример, когда каждый ресурс формы на выбранной странице должен быть удалён в одной операции.

  1. Откройте исходный PDF в объекте Document.
  2. Получите доступ к XFormCollection для целевой страницы.
  3. Очистите коллекцию и сохраните обновлённый документ.
public static void removeAllForms(Path inputFile, int pageNum, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        XFormCollection forms = document.getPages().get_Item(pageNum).getResources().getForms();
        forms.clear();
        document.save(outputFile.toString());
    }
}

Удаление конкретных ресурсов Form

Используйте этот пример, когда должны быть удалены только выбранные ресурсы Form, такие как формы Typewriter.

  1. Откройте исходный PDF в объекте Document.
  2. Получите доступ к XFormCollection для целевой страницы.
  3. Фильтруйте XForm ресурсы, которые вы хотите удалить, и удалите их из коллекции.
  4. Сохраните обновлённый PDF Document.
public static void removeSpecifiedForm(Path inputFile, int pageNum, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        XFormCollection forms = document.getPages().get_Item(pageNum).getResources().getForms();
        List<String> formNames = new ArrayList<>();
        for (XForm form : forms) {
            if ("Typewriter".equals(form.getIT()) && "Form".equals(form.getSubtype())) {
                formNames.add(forms.getFormName(form));
            }
        }
        for (String formName : formNames) {
            forms.delete(formName);
        }
        document.save(outputFile.toString());
    }
}