Создание AcroForm - Создание заполняемого PDF в C#
Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing .
Создание формы с нуля
Добавление поля формы в PDF документ
Класс Document предоставляет коллекцию под названием Form , которая помогает управлять полями формы в PDF документе.
Чтобы добавить поле формы:
Создайте поле формы, которое вы хотите добавить.
Вызовите метод Add коллекции Form .
Добавление TextBoxField
Ниже приведен пример, показывающий, как добавить TextBoxField .
.NET Core 3.1
Copy
private static void AddTextBoxFieldToPdf ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_Forms ();
using ( var document = new Aspose . Pdf . Document ( dataDir + "TextField.pdf" ))
{
var textBoxField = new Aspose . Pdf . Forms . TextBoxField ( document . Pages [ 1 ], new Aspose . Pdf . Rectangle ( 100 , 200 , 300 , 300 ));
textBoxField . PartialName = "textbox1" ;
textBoxField . Value = "Text Box" ;
var border = new Aspose . Pdf . Annotations . Border ( textBoxField );
border . Width = 5 ;
border . Dash = new Aspose . Pdf . Annotations . Dash ( 1 , 1 );
textBoxField . Border = border ;
textBoxField . Color = Aspose . Pdf . Color . FromRgb ( System . Drawing . Color . Green );
document . Form . Add ( textBoxField , 1 );
document . Save ( dataDir + "TextBox_out.pdf" );
}
}
.NET 8
Copy
private static void AddTextBoxFieldToPdf ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_Forms ();
using var document = new Aspose . Pdf . Document ( dataDir + "TextField.pdf" );
var textBoxField = new Aspose . Pdf . Forms . TextBoxField ( document . Pages [ 1 ], new Aspose . Pdf . Rectangle ( 100 , 200 , 300 , 300 ));
textBoxField . PartialName = "textbox1" ;
textBoxField . Value = "Text Box" ;
var border = new Aspose . Pdf . Annotations . Border ( textBoxField );
border . Width = 5 ;
border . Dash = new Aspose . Pdf . Annotations . Dash ( 1 , 1 );
textBoxField . Border = border ;
textBoxField . Color = Aspose . Pdf . Color . FromRgb ( System . Drawing . Color . Green );
document . Form . Add ( textBoxField , 1 );
document . Save ( dataDir + "TextBox_out.pdf" );
}
Следующие фрагменты кода показывают, как добавить RadioButtonField в PDF документ.
.NET Core 3.1
Copy
private static void AddRadioButtonToPdf ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_Forms ();
using ( var document = new Aspose . Pdf . Document ())
{
document . Pages . Add ();
var radio = new Aspose . Pdf . Forms . RadioButtonField ( document . Pages [ 1 ]);
radio . AddOption ( "Test" , new Aspose . Pdf . Rectangle ( 0 , 0 , 20 , 20 ));
radio . AddOption ( "Test1" , new Aspose . Pdf . Rectangle ( 20 , 20 , 40 , 40 ));
document . Form . Add ( radio );
document . Save ( dataDir + "RadioButton_out.pdf" );
}
}
.NET 8
Copy
private static void AddRadioButtonToPdf ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_Forms ();
using var document = new Aspose . Pdf . Document ();
document . Pages . Add ();
var radio = new Aspose . Pdf . Forms . RadioButtonField ( document . Pages [ 1 ]);
radio . AddOption ( "Test" , new Aspose . Pdf . Rectangle ( 0 , 0 , 20 , 20 ));
radio . AddOption ( "Test1" , new Aspose . Pdf . Rectangle ( 20 , 20 , 40 , 40 ));
document . Form . Add ( radio );
document . Save ( dataDir + "RadioButton_out.pdf" );
}
TextBoxField может быть добавлен с некоторыми аннотациями виджетов.
.NET Core 3.1
Copy
private static void AddTextBoxFieldToPdf ( )
{
string dataDir = RunExamples . GetDataDir_AsposePdf_Forms ();
using ( var document = new Aspose . Pdf . Document ())
{
var page = document . Pages . Add ();
var rects = new Aspose . Pdf . Rectangle []
{
new Aspose . Pdf . Rectangle ( 10 , 600 , 110 , 620 ),
new Aspose . Pdf . Rectangle ( 10 , 630 , 110 , 650 ),
new Aspose . Pdf . Rectangle ( 10 , 660 , 110 , 680 )
};
var defaultAppearances = new Aspose . Pdf . Annotations . DefaultAppearance []
{
new Aspose . Pdf . Annotations . DefaultAppearance ( "Arial" , 10 , System . Drawing . Color . DarkBlue ),
new Aspose . Pdf . Annotations . DefaultAppearance ( "Helvetica" , 12 , System . Drawing . Color . DarkGreen ),
new Aspose . Pdf . Annotations . DefaultAppearance ( Aspose . Pdf . Text . FontRepository . FindFont ( "TimesNewRoman" ), 14 , System . Drawing . Color . DarkMagenta )
};
var textBoxField = new Aspose . Pdf . Forms . TextBoxField ( page , rects );
short i = 0 ;
foreach ( Aspose . Pdf . Annotations . WidgetAnnotation wa in textBoxField )
{
wa . DefaultAppearance = defaultAppearances [ i ++];
}
textBoxField . Value = "Text" ;
document . Form . Add ( textBoxField );
document . Save ( dataDir + "TextBox_out.pdf" );
}
}
.NET 8
Copy
private static void AddTextBoxFieldToPdf ( )
{
string dataDir = RunExamples . GetDataDir_AsposePdf_Forms ();
using var document = new Aspose . Pdf . Document ();
var page = document . Pages . Add ();
var rects = new Aspose . Pdf . Rectangle []
{
new Aspose . Pdf . Rectangle ( 10 , 600 , 110 , 620 ),
new Aspose . Pdf . Rectangle ( 10 , 630 , 110 , 650 ),
new Aspose . Pdf . Rectangle ( 10 , 660 , 110 , 680 )
};
var defaultAppearances = new Aspose . Pdf . Annotations . DefaultAppearance []
{
new Aspose . Pdf . Annotations . DefaultAppearance ( "Arial" , 10 , System . Drawing . Color . DarkBlue ),
new Aspose . Pdf . Annotations . DefaultAppearance ( "Helvetica" , 12 , System . Drawing . Color . DarkGreen ),
new Aspose . Pdf . Annotations . DefaultAppearance ( Aspose . Pdf . Text . FontRepository . FindFont ( "TimesNewRoman" ), 14 , System . Drawing . Color . DarkMagenta )
};
var textBoxField = new Aspose . Pdf . Forms . TextBoxField ( page , rects );
short i = 0 ;
foreach ( Aspose . Pdf . Annotations . WidgetAnnotation wa in textBoxField )
{
wa . DefaultAppearance = defaultAppearances [ i ++];
}
textBoxField . Value = "Text" ;
document . Form . Add ( textBoxField );
document . Save ( dataDir + "TextBox_out.pdf" );
}
Следующий фрагмент кода показывает шаги для добавления RadioButtonField с тремя вариантами и размещения их внутри ячеек таблицы.
Следующий фрагмент кода показывает, как добавить подпись, которая будет связана с RadioButtonField:
Другой вариант для добавления сгруппированных флажков
Следующие фрагменты кода показывают, как добавить сгруппированные поля CheckBox в PDF документ.
.NET Core 3.1
Copy
private static void AddGroupedCheckBoxFieldsToPdf ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_Forms ();
using ( var document = new Aspose . Pdf . Document ())
{
var page = document . Pages . Add ();
var radioButtonField = new Aspose . Pdf . Forms . RadioButtonField ( page );
var opt1 = new Aspose . Pdf . Forms . RadioButtonOptionField ( page , new Aspose . Pdf . Rectangle ( 50 , 500 , 70 , 520 ));
var opt2 = new Aspose . Pdf . Forms . RadioButtonOptionField ( page , new Aspose . Pdf . Rectangle ( 100 , 500 , 120 , 520 ));
opt1 . OptionName = "Option1" ;
opt2 . OptionName = "Option2" ;
opt1 . Style = Aspose . Pdf . Forms . BoxStyle . Square ;
opt2 . Style = Aspose . Pdf . Forms . BoxStyle . Cross ;
opt1 . Border = new Aspose . Pdf . Annotations . Border ( opt1 );
opt1 . Border . Style = Aspose . Pdf . Annotations . BorderStyle . Dashed ;
opt1 . Border . Width = 1 ;
opt1 . Characteristics . Border = System . Drawing . Color . Blue ;
opt2 . Border = new Aspose . Pdf . Annotations . Border ( opt2 );
opt2 . Border . Style = Aspose . Pdf . Annotations . BorderStyle . Solid ;
opt2 . Border . Width = 1 ;
opt2 . Characteristics . Border = System . Drawing . Color . Black ;
radioButtonField . Add ( opt1 );
radioButtonField . Add ( opt2 );
document . Form . Add ( radioButtonField );
document . Save ( dataDir + "GroupedCheckboxFields_out.pdf" );
}
}
.NET 8
Copy
private static void AddGroupedCheckBoxFieldsToPdf ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_Forms ();
using var document = new Aspose . Pdf . Document ();
var page = document . Pages . Add ();
var radioButtonField = new Aspose . Pdf . Forms . RadioButtonField ( page );
var opt1 = new Aspose . Pdf . Forms . RadioButtonOptionField ( page , new Aspose . Pdf . Rectangle ( 50 , 500 , 70 , 520 ));
var opt2 = new Aspose . Pdf . Forms . RadioButtonOptionField ( page , new Aspose . Pdf . Rectangle ( 100 , 500 , 120 , 520 ));
opt1 . OptionName = "Option1" ;
opt2 . OptionName = "Option2" ;
opt1 . Style = Aspose . Pdf . Forms . BoxStyle . Square ;
opt2 . Style = Aspose . Pdf . Forms . BoxStyle . Cross ;
opt1 . Border = new Aspose . Pdf . Annotations . Border ( opt1 );
opt1 . Border . Style = Aspose . Pdf . Annotations . BorderStyle . Dashed ;
opt1 . Border . Width = 1 ;
opt1 . Characteristics . Border = System . Drawing . Color . Blue ;
opt2 . Border = new Aspose . Pdf . Annotations . Border ( opt2 );
opt2 . Border . Style = Aspose . Pdf . Annotations . BorderStyle . Solid ;
opt2 . Border . Width = 1 ;
opt2 . Characteristics . Border = System . Drawing . Color . Black ;
radioButtonField . Add ( opt1 );
radioButtonField . Add ( opt2 );
document . Form . Add ( radioButtonField );
document . Save ( dataDir + "GroupedCheckboxFields_out.pdf" );
}
Добавление поля ComboBox
Следующие фрагменты кода показывают, как добавить поле ComboBox в PDF документ.
Добавление CheckboxField
Следующий фрагмент кода показывает, как добавить CheckboxField в PDF документ.
Добавление ListBoxField
Следующий фрагмент кода показывает, как добавить ListBoxField в PDF документ.
Использование SignatureField
Следующий фрагмент кода показывает, как подписать PDF документ с помощью SignatureField.
.NET Core 3.1
Copy private static void SignPdfBySignatureField ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_Forms ();
using ( var document = new Aspose . Pdf . Document ( dataDir + "TextField.pdf" ))
{
var page = document . Pages . Add ();
var signatureField = new Aspose . Pdf . Forms . SignatureField ( page , new Aspose . Pdf . Rectangle ( 100 , 700 , 200 , 800 ));
document . Form . Add ( signatureField );
var pkcs = new Aspose . Pdf . Forms . PKCS7 ( "test1.pfx" , "test1" );
pkcs . Date = new DateTime ();
pkcs . ContactInfo = "Test" ;
pkcs . Location = "TestLocation" ;
pkcs . Reason = "Verify" ;
pkcs . ShowProperties = false ;
signatureField . Sign ( pkcs );
document . Save ( dataDir + "SignatureField_out.pdf" );
}
}
.NET 8
Copy private static void SignPdfBySignatureField ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_Forms ();
using var document = new Aspose . Pdf . Document ( dataDir + "TextField.pdf" );
var page = document . Pages . Add ();
var signatureField = new Aspose . Pdf . Forms . SignatureField ( page , new Aspose . Pdf . Rectangle ( 100 , 700 , 200 , 800 ));
document . Form . Add ( signatureField );
var pkcs = new Aspose . Pdf . Forms . PKCS7 ( "test1.pfx" , "test1" );
pkcs . Date = new DateTime ();
pkcs . ContactInfo = "Test" ;
pkcs . Location = "TestLocation" ;
pkcs . Reason = "Verify" ;
pkcs . ShowProperties = false ;
signatureField . Sign ( pkcs );
document . Save ( dataDir + "SignatureField_out.pdf" );
}
Добавление подсказки к полю формы
Класс Document предоставляет коллекцию под названием Form, которая управляет полями формы в PDF документе. Чтобы добавить подсказку к полю формы, используйте свойство AlternateName класса Field. Adobe Acrobat использует «альтернативное имя» в качестве подсказки для поля.
Следующие фрагменты кода показывают, как добавить подсказку к полю формы, сначала используя C#, а затем Visual Basic.