Я знаю, что прошло больше двух лет с тех пор, как вы спросили, но я столкнулся с той же проблемой.Я гуглил решение, и, видимо, нигде не было найдено.Поэтому я должен был разработать свою собственную, и я подумал, что мог бы поделиться этим.Надеюсь, это кому-нибудь пригодится.
Я пытался использовать летающую тарелку, как и вы, но у меня это не сработало.Мой кусок HTML был простой таблицей, поэтому я мог использовать iText HTMLWorker для анализа.
Итак, сначала я получаю PdfStamper, как вы предложили.
PdfReader template = new PdfReader(templateFileName);
PdfStamper editablePage = new PdfStamper(template, reportOutStream);
Затем я работаю сдокумент (заполните поля, вставьте несколько изображений) и после этого мне нужно вставить фрагмент HTML.
//getting a 'canvas' to add parsed elements
final ColumnText page = new ColumnText(editablePage.getOverContent(pageNumber));
//finding out the page sizefinal
Rectangle pagesize = editablePage.getReader().getPageSize(pageNumber);
//you can define any size here, that will be where your parsed elements will be added
page.setSimpleColumn(0, 0, pagesize.getWidth(), pagesize.getHeight());
Если вам нужно простое оформление, HTMLWorker может кое-что сделать
StyleSheet styles = new StyleSheet();
styles.loadStyle("h1", "color", "#008080");
//parsing
List<Element> parsedTags = HTMLWorker.parseToList(new StringReader(htmlSnippet), styles);
for (Element tag : parsedTags)
{
page.addElement(tag);
page.go();
}
Это лишь некоторые основные идеи, как это сделать, надеюсь, это поможет.