Tiling images

This is a code example of iText PDF, discover more.

31st May 2016
iText PDF

This example was written in answer to the question How to show an image with large dimensions across multiple pages?

TiledImage.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
    This file is part of the iText (R) project.
    Copyright (c) 1998-2019 iText Group NV
    Authors: iText Software.
 
    For more information, please contact iText Software at this address:
    sales@itextpdf.com
 */
/**
 * This code sample was written by Bruno Lowagie in answer to this question:
 * http://stackoverflow.com/questions/26859473/how-to-show-an-image-with-large-dimensions-across-multiple-pages-in-itextpdf
 */
package com.itextpdf.samples.sandbox.images;
 
import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.samples.GenericTest;
import com.itextpdf.test.annotations.type.SampleTest;
 
import org.junit.experimental.categories.Category;
 
import java.io.File;
 
@Category(SampleTest.class)
public class TiledImage extends GenericTest {
    public static final String DEST = "./target/test/resources/sandbox/images/tiled_image.pdf";
    public static final String IMAGE = "./src/test/resources/img/bruno_ingeborg.jpg";
 
    public static void main(String[] args) throws Exception {
        File file = new File(DEST);
        file.getParentFile().mkdirs();
        new TiledImage().manipulatePdf(DEST);
    }
 
    @Override
    protected void manipulatePdf(String dest) throws Exception {
        ImageData image = ImageDataFactory.create(IMAGE);
        float width = image.getWidth();
        float height = image.getHeight();
        PageSize pageSize = new PageSize(width / 2, height / 2);
 
        PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
        pdfDoc.setDefaultPageSize(pageSize);
 
        PdfCanvas canvas;
        canvas = new PdfCanvas(pdfDoc.addNewPage().newContentStreamBefore(),
                pdfDoc.getLastPage().getResources(), pdfDoc);
        canvas.addImage(image, width, 0, 0, height, 0, -height / 2, false);
        canvas = new PdfCanvas(pdfDoc.addNewPage().newContentStreamBefore(),
                pdfDoc.getLastPage().getResources(), pdfDoc);
        canvas.addImage(image, width, 0, 0, height, 0, 0, false);
        canvas = new PdfCanvas(pdfDoc.addNewPage().newContentStreamBefore(),
                pdfDoc.getLastPage().getResources(), pdfDoc);
        canvas.addImage(image, width, 0, 0, height, -width / 2, -height / 2, false);
        canvas = new PdfCanvas(pdfDoc.addNewPage().newContentStreamBefore(),
                pdfDoc.getLastPage().getResources(), pdfDoc);
        canvas.addImage(image, width, 0, 0, height, -width / 2, 0, false);
 
        pdfDoc.close();
    }
}

Click the following link to see the legacy example for iText 5. Except for security fixes, iText 5 is no longer being developed.



Contact

Still have questions? 

We're happy to answer your questions. Reach out to us and we'll get back to you shortly.

Contact us
Stay updated

Join 11,000+ subscribers and become an iText PDF expert by staying up to date with our new products, updates, tips, technical solutions and happenings.

Subscribe Now