Изменение AcroForm

Получить или Установить Ограничение Поля

Метод SetFieldLimit(field, limit) класса FormEditor позволяет установить ограничение поля, максимальное количество символов, которые могут быть введены в поле.

void SetFieldLimitDom() {
    String _dataDir("C:\\Samples\\");
    // Открыть документ
    auto document = MakeObject<Document>(_dataDir + u"GetValuesFromAllFields.pdf");
    auto textBoxField = System::DynamicCast<TextBoxField>(document->get_Form()->idx_get(u"textbox1"));
    textBoxField->set_MaxLen(15);
    document->Save(_dataDir + u"GetValuesFromAllFields.pdf");
}

Аналогично, Aspose.PDF имеет метод, который получает ограничение поля с использованием подхода DOM. Следующий фрагмент кода показывает шаги.

void GetFieldLimitDom() {
    String _dataDir("C:\\Samples\\");
    // Открыть документ
    auto document = MakeObject<Document>(_dataDir + u"GetValuesFromAllFields.pdf");
    auto textBoxField = System::DynamicCast<TextBoxField>(document->get_Form()->idx_get(u"textbox1"));
    Console::WriteLine(u"Limit: {0}", textBoxField->get_MaxLen());        
}

Вы также можете установить и получить то же значение, используя пространство имен Aspose.PDF.Facades с помощью следующего фрагмента кода.

using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Forms;

void SetFieldLimitFacade(){
    String _dataDir("C:\\Samples\\");
    // Добавление поля с ограничением
    auto form = MakeObject<Aspose::Pdf::Facades::FormEditor>(_dataDir + u"input.pdf", _dataDir + u"SetFieldLimit_out.pdf");
    form->SetFieldLimit(u"textbox1", 15);
    form->Save();
}
void GetFieldLimitFacade(){
    String _dataDir("C:\\Samples\\");
    // Добавление поля с ограничением
    auto form = MakeObject<Aspose::Pdf::Facades::Form>(_dataDir + u"input.pdf");
    Console::WriteLine(u"Limit: {0}", form->GetFieldLimit(u"textbox1"));
}

Установка пользовательского шрифта для поля формы

Поля формы в файлах Adobe PDF могут быть настроены для использования определенных шрифтов по умолчанию. В ранних версиях Aspose.PDF поддерживались только 14 стандартных шрифтов. Поздние выпуски позволили разработчикам применять любой шрифт. Чтобы установить и обновить шрифт по умолчанию, используемый для полей формы, используйте класс DefaultAppearance (Font font, double size, Color color). Этот класс находится в пространстве имен Aspose.PDF.InteractiveFeatures. Чтобы использовать этот объект, используйте свойство DefaultAppearance класса Field.

Следующий фрагмент кода показывает, как установить шрифт по умолчанию для полей формы PDF.

void SetCustomFontForField() {

    String _dataDir("C:\\Samples\\");

    // Открыть документ
    auto document = new Document(_dataDir + u"FormFieldFont14.pdf");

    // Получить конкретное поле формы из документа
    auto textBoxField = System::DynamicCast<TextBoxField>(document->get_Form()->idx_get(u"textbox1"));

    // Создать объект шрифта
    auto font = Aspose::Pdf::Text::FontRepository::FindFont(u"ComicSansMS");

    // Установить информацию о шрифте для поля формы

    textBoxField->set_DefaultAppearance(MakeObject<Aspose::Pdf::Annotations::DefaultAppearance>(font, 10, System::Drawing::Color::get_Black()));

    // Сохранить обновленный документ
    document->Save(_dataDir + u"FormFieldFont14.pdf");
}

Удаление полей из существующей формы

Все поля формы содержатся в коллекции Form объекта Document. Эта коллекция предоставляет различные методы для управления полями формы, включая метод Delete. Если вы хотите удалить конкретное поле, передайте имя поля в качестве параметра методу Delete, а затем сохраните обновленный PDF-документ. Следующий фрагмент кода показывает, как удалить конкретное поле из PDF-документа.

void DeleteFormField() {    
    String _dataDir("C:\\Samples\\");

    // Открыть документ
    auto document = new Document(_dataDir + u"DeleteFormField.pdf");

    // Удалить конкретное поле по имени
    document->get_Form()->Delete(u"textbox1");
    
    // Сохранить измененный документ
    document->Save(_dataDir + u"DeleteFormField_out.pdf");
}