Я предлагаю вам использовать событие страницы:
myWriter.setPageEvent(new BackgroundPageEvent(backgroundImage));
class BackgroundPageEvent extends PdfPageEventHelper {
Image backgroundImage = null;
public BackgroundPageEvent( Image img ) {
backgroundImage = img;
}
public void onStartPage(PdfWriter writer, Document doc) {
PdfContentByte underContent = writer.getDirectContentUnder();
underContent.addImage(backgroundImage);
}
}
С указанным выше кодом, backgroundImage
будет добавлено в «under content» при создании каждой страницы.Не нужно беспокоиться о том, когда добавлять его самому ... iText определит это для вас, и первым делом в недовольном содержании каждой страницы будет ваше изображение.Возможно, вам придется поэкспериментировать с различными переопределениями addImage, чтобы получить нужный размер.
Я полагаю, вы также можете запросить doc
для текущего размера страницы, если он варьируется в вашей программе.Если нет, вы сможете создать изображение, которое вы передаете, с абсолютной позицией / масштабом (что может быть тем, что вы уже делаете).
PdfPageEvent имеет ряд других событий, которые вы можетепереопределения.PdfPageEventHelper покрывает все базы «без операций», поэтому вы можете просто переопределить нужные события:
- OnStartPage
- OnEndPage
- OnCloseDocument
- OnParagraph
- OnParagraphEnd
- OnChapter
- OnChapterEnd
- OnSection
- OnSectionEnd
- OnGenericTag
Общий тег действительно удобен.Вы можете присвоить универсальный тег (строку) практически чему-либо в вашем документе, и ваше переопределение OnGenericTag будет вызываться с прямоугольником, который использовался для рисования того, что было вами помечено.Все виды элегантных возможностей.