Изменение AcroForm
Contents
[
Hide
]
Обслуживание форм зачастую включает как правки на уровне полей, так и очистку ресурсов страниц, связанных с формами.
Очистка текста во встроенных ресурсах формы
Используйте этот пример, когда содержимое формы Typewriter должно быть опустошено без удаления самих объектов формы.
- Откройте исходный PDF в объекте Document.
- Переберите ресурсы форм страниц и найдите формы Typewriter.
- Очистите поглощённые фрагменты текста и сохраните документ.
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());
}
}
Установка ограничения длины текстового поля
Используйте этот пример, когда текстовое поле должно принимать только ограниченное количество символов.
- Создайте фасад FormEditor и привяжите к нему исходный PDF.
- Установите максимальную длину для целевого поля.
- Сохраните обновлённый документ.
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();
}
}
Получение ограничения длины текстового поля
Используйте этот пример, когда нужно проверить текущую максимальную длину текстового поля.
- Откройте исходный PDF в объекте Document.
- Получите целевое поле из коллекции формы.
- Прочитайте ограничение из 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
Используйте этот пример, когда существующее текстовое поле должно использовать другой шрифт или внешний вид.
- Откройте исходный PDF в объекте Document.
- Получите доступ к нужному полю TextBoxField и задайте новый внешний вид по умолчанию.
- Сохраните обновлённый 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.
- Откройте исходный PDF в объекте Document.
- Удалите целевое поле из формы по его имени.
- Сохраните обновлённый документ.
public static void deleteFormField(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
document.getForm().delete("First Name");
document.save(outputFile.toString());
}
}