большинство примеров iText7 относятся к использованию PdfFontFactory.createFont()
для получения дескрипторов экземпляров PdfFont для текстовых операций. С модерацией это нормально ... но PdfFont - довольно тяжелый объект (PdfEncoding), который, похоже, не исчезнет, пока PdfDocument не будет закрыт. Итак, следующий невинный блок поглотит память:
for (int i = 0; i < someLargeNumber; i++) {
list.add(
new ListItem("never gonna give")
.setFont(PdfFontFactory.createFont("Helvetica-Oblique"))
)
}
тривиальная попытка решения с использованием статики не удалась, поскольку кажется, что экземпляры PdfFont нельзя использовать более чем в одном документе PdfDocument. И поскольку мой реальный случай более сложен, чем приведенный выше пример, я не хочу передавать кучу ссылок PdfFont через довольно глубокий стек.
- в API iText7 нет возможности перебирать существующие PdfFont для PdfDocument (есть ли?)
- является правилом использования PdfFont просто: а) его можно использовать сколько угодно раз; б) в одном экземпляре PdfDocument
(т.е. можно ли здесь просто кэшировать экземпляры PdfFont с помощью ключа PdfDocument + PdfFontProgram?)