Да, абсолютно . Все должно быть абсолютно позиционировано в PDF, поэтому выполнение потока текста, выравнивание и т. Д. Требует больше работы. iText делает все это за вас, если вы спросите, но это еще больше работы.
Как указал Сувеш, PdfStamper
отлично работает для внесения изменений в существующий PDF. Добавить абсолютно позиционированный текст довольно просто.
Также можно размещать текст абсолютно в PDF-файле, который вы создаете с нуля в iText.
В любом случае вам нужно получить PdfContentByte
. В PdfStamper
вы звоните getOverContent(pageNum)
или getUnderContent(pageNum)
. С PdfWriter вы просто звоните getOverContent()
или getUnderContent()
.
С помощью PdfWriter вам нужно только один раз получить значение over или under PdfContentByte. Каждый раз, когда он запускает новую страницу, он высасывает весь контент и сбрасывает объект, готовый к следующей странице.
OTOH, он не начинает строить страницы, пока вы не позвоните doc.close()
, поэтому вам нужно использовать PdfPageEvent
(я рекомендую наследовать от PdfPageEventHelper
) для записи на страницах по мере их создания ... с PdfStamper проблем не возникнет.