Чтобы узнать, где на странице находится данный элемент, вам нужно дать ему общий тег и зарегистрировать PdfPageEvent
в вашем PdfWriter
.
Чтобы нарисовать текст в определенном месте, вы должны нарисовать его непосредственно на PdfContentByte
. Обратите внимание, что «напрямую» не так уж и просто, когда вы все еще можете построить абзац и вызвать ColumnText.showTextAligned()
.
В подробности
Чтобы дать Image
универсальный тег, вы должны обернуть его во фрагмент:
Chunk imgChunk = new Chunk( img, 0, 0 );
imgChunk.setGenericTag("imgTag");
Затем вы устанавливаете обработчик PdfPageEvent
с обратным вызовом onGenericTag, который будет рисовать ваш текст:
myPdfWriter.setPageEvent( new PdfPageEventHelper() {
public void onGenericTag(PdfWriter writer, Document doc, Rectangle chunkRect, String tag ) {
if ("imgTag".equals(tag)) {
// Draw your text into that rect.
ColumnText.showTextAligned(writer.getOverContent(), Element.ALIGN_LEFT, paragraph,
chunkRect.getLeft() + someOffsetX, chunkRect.getTop() - someOffsetY, 0f );
}
}
} );
PdfPageEventHelper
- пустая реализация интерфейса PdfPageEvent
. Мы переопределяем метод, который нам небезразличен, и мы уходим.