Да, вроде.Поля PDF могут иметь расширенное текстовое значение (начиная с acrobat 6 / pdf1.5) вместе с обычным значением.
В обычном значении используется шрифт, определенный в появлениях по умолчанию ... один шрифт.
Формат расширенного значения (который iText не поддерживает напрямую, по крайней мере, пока), описан в главе 12.7.3.4 PDF Reference .<b>, <i>, <p>
, и довольно много текстовых атрибутов css2.Требуется a с различными атрибутами.
Чтобы включить расширенные значения, необходимо установить бит 26 флагов полей (PdfName.FF
) для текстового поля.PdfFormField не имеет setRichValue, но это словари, поэтому вы можете просто:
myPdfFormField.put(PdfName.RV, new PdfString( richTextValue ) );
Если вы пытаетесь добавить форматированный текст в существующее поле, которое его еще не поддерживает:
AcroFields fields = stamper.getAcroFields();
AcroFields.Item fldItem = fields.getFieldItem(fldName);
PdfDictionary mergedDict = item.getMerged(0);
int flagVal = mergedDict.getAsNumber(PdfName.FF).intValue();
flagVal |= (1 << 26);
int writeFlags = AcroFields.Item.WRITE_MERGED | AcroFields.Item.WRITE_VALUE;
fldItem.writeToAll(PdfName.FF, new PdfNumber(flagVal), writeFlags);
fldItem.writeToAll(PdfName.RV, new PdfString(richTextValue), writeFlags);
На самом деле я добавляю поддержку расширенного текста в iText (не резкое), когда набираю это сообщение.Ура для авторов на SO.В последнее время Пауло хорошо синхронизировал iTextSharp, так что это не должно быть проблемой.В следующем выпуске магистрали должна быть эта функция ... чтобы вы могли писать:
myPdfFormField.setFieldFlags( PdfFormField.FF_RICHTEXT );
myPdfFormField.setRichValue( richTextValue );
или
// note that this will fail unless the rich flag is set
acroFields.setFieldRichValue( richTextValue );
ПРИМЕЧАНИЕ. Генерация внешнего вида iText не была обновлена,только ценностная сторона вещей.Это заняло бы значительно больше работы.Поэтому вам нужно acroFields.setGenerateAppearances(false)
или иметь JS, который сбрасывает значение поля при открытии формы, чтобы заставить Acrobat / Reader создать внешний вид для вас.