pdfStamper.AcroFields.SetField не сохраняет настройки внешнего вида - PullRequest
0 голосов
/ 18 февраля 2019

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

Для некоторых полей я должен установить интервал между символами, поэтому яиспользуйте CreateAppearance метод.это код:

var appearance = writer.DirectContent.CreateAppearance(box.Width, box.Height);
appearance.SetFontAndSize(baseFont, obj.FontSize);
appearance.SetColorFill(new iTextSharp.text.BaseColor(obj.Color));
appearance.SetCharacterSpacing(obj.CharSpacing);
formField.DefaultAppearanceString = appearance;
formField.SetAppearance(iTextSharp.text.pdf.PdfAnnotation.APPEARANCE_NORMAL, appearance);

writer.AddAnnotation(formField);

этот код дает ожидаемый результат в формате pdf с небольшим межсимвольным интервалом в редактируемых полях.

Проблема заключается в том, что при редактировании файла pdf для заполнения AcroFields:

pdfStamper.FormFlattening = true;
pdfStamper.AcroFields.GenerateAppearances = true;
pdfStamper.AcroFields.SetField(fieldName, fieldValue);

полученный сглаженный pdf не поддерживает интервал появления символов ...

Что не так с моим кодом?

Спасибо

1 Ответ

0 голосов
/ 20 февраля 2019

Для генерации появления текстовых полей iText 5.x использует только шрифт, размер шрифта и информацию о цвете из строки внешнего вида по умолчанию DA (и информацию о цвете, только если она установлена ​​с использованием g , rg или k инструкции), ср.AcroFields метод SplitDAelements, который используется для извлечения информации из строки DA .

Таким образом, генерация внешнего вида iText 5.x довольно ограничена и, в частности, не поддерживает межсимвольный интервал.

Возможный обходной путь - явное создание всех появлений в вашем собственном коде.

...