Некоторое время назад я добавил в iText возможность задавать значение расширенного текста поля. Я не добавил никакого кода рендеринга, чтобы поддержать это.
Это означает, что единственный способ увидеть это богатое значение - через средство просмотра PDF, которое его поддерживает (Reader / Acrobat). Чтобы они знали, что им нужно восстановить все поля, вам нужно позвонить acroFields.setGenerateAppearances(false)
. Это отключает генерацию внешнего вида iText и вместо этого запрашивает, чтобы программа просмотра PDF сделала это за вас.
Если вы хотите сплющенный форматированный текст полностью внутри iText [Sharp], вам придется сделать что-то странное:
- Нарисуйте свой форматированный текст на странице PDF в отдельном документе. Размер этой страницы должен соответствовать размеру поля. Сохраните его (поток памяти в порядке).
- Добавить новый
PushbuttonField
, установить LAYOUT_ICON_ONLY
. Используйте ту же ограничивающую рамку, что и в исходном текстовом поле. Установите цвет фона кнопки на null
(прозрачный).
- Создайте
PdfImportedPage
вашей страницы форматированного текста и установите для этой импортированной страницы новый значок (шаблон) PushbuttonField
.
- Сглаживание.
Болезненно, но эффективно.
Вы можете сделать # 1 с HTMLWorker и использовать свой исходный форматированный текст / HTML в качестве ввода.
Фактически, вы, вероятно, могли бы стать немного более эффективными, если бы HTMLWorker передавал объект ColumnText для визуализации вашего HTML-кода в том же документе, а не в новом, а затем записать его и прочитать снова. Подберите шаблон PDF из DirectContent любой старой страницы с помощью соответствующего ограничивающего прямоугольника.
Это было бы намного хуже.