Возьмите PDF-файл, поместите туда несколько текстовых полей PDF с одинаковым именем, но разными шрифты. Скажем, поле под названием «test» шрифтом verdana 10pt и другое поле под названием «test» шрифтом verdana 6pt. Сохраните это поле.
Цель программного обеспечения состоит в том, чтобы взять форму и заполнить ее, поэтому код должен запуститься и заполнить эти поля. Да, но каким бы ни было форматирование первого поля (по крайней мере, имеющего форматирование), оно будет скопировано во все остальные поля после него, так что вы потеряете форматирование, которое должно иметь документ.
Вот мой код:
Код: Выделить всё
Dictionary fieldValues = new Dictionary(StringComparer.InvariantCultureIgnoreCase);
fieldValues["testField"] = "This is a value";
using (PdfReader reader = new PdfReader(sourcePdf))
{
using (PdfWriter writer = new PdfWriter(destPdf))
{
using (PdfDocument document = new PdfDocument(reader, writer))
{
PdfAcroForm form = PdfAcroForm.GetAcroForm(document, false);
if (form == null)
return;
var fields = form.GetAllFormFields();
foreach (PdfFormField field in fields.Select(m => m.Value))
{
string fieldName = field.GetFieldName().ToString();
if (field is PdfTextFormField textField && fieldValues.ContainsKey(fieldName))
field.SetValue(fieldValues[fieldName]);
}
document.Close();
}
writer.Close();
}
reader.Close();
}
до
после
Подробнее здесь: https://stackoverflow.com/questions/791 ... formatting