Вы добавляете изображение в слой, запуская этот слой в PdfCanvas
для рисования, добавляя изображение и снова заканчивая слой в нем.
В зависимости от того, хотите ли вы сделать макет содержимогоработать самостоятельно, вы можете сделать добавление изображения непосредственно или через Canvas
.
Например:
try ( PdfWriter writer = new PdfWriter(...);
PdfDocument pdfDoc = new PdfDocument(writer);
Document document = new Document(pdfDoc) ) {
ImageData data = ImageDataFactory.create(IMAGE_DATA);
Image img = new Image(data);
PdfLayer pdflayer = new PdfLayer("main layer", pdfDoc);
pdflayer.setOn(true);
// using a Canvas, to allow iText layout'ing the image
PdfCanvas pdfCanvas = new PdfCanvas(pdfDoc.addNewPage());
try ( Canvas canvas = new Canvas(pdfCanvas, pdfDoc, document.getPageEffectiveArea(pdfDoc.getDefaultPageSize())) ) {
canvas.add(new Paragraph("This image is added using a Canvas:"));
pdfCanvas.beginLayer(pdflayer);
canvas.add(img);
pdfCanvas.endLayer();
canvas.add(new Paragraph("And this image is added immediately:"));
}
// or directly
pdfCanvas.beginLayer(pdflayer);
pdfCanvas.addImage(data, 100, 100, false);
pdfCanvas.endLayer();
}
( AddImageToLayer test testAddLikeIan
)
В соответствии с названием вашего вопроса вы ищете решение для iText 5 или iText 7. Код выше для iText 7, я использовал текущую версию разработки 7.10,4-ПАНОРАМА.