Skip to main content
Skip table of contents

Rectangle examples


drawrectangle

JAVA

JAVA
/**
 * This code sample was written by Bruno Lowagie in answer to this question:
 * http://stackoverflow.com/questions/21718712/itext-pdfcontentbyte-rectanglerectangle-does-not-behave-as-expected
 */
package sandbox.objects;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import sandbox.WrapToTest;

@WrapToTest
public class DrawRectangle {

    public static final String DEST = "results/objects/draw_rectangle.pdf";
    
    public static void main(String[] args) throws IOException, DocumentException {
        File file = new File(DEST);
        file.getParentFile().mkdirs();
        new DrawRectangle().createPdf(DEST);
    }
    public void createPdf(String dest) throws IOException, DocumentException {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
        document.open();

        PdfContentByte canvas = writer.getDirectContent();
        Rectangle rect = new Rectangle(36, 36, 559, 806);
        rect.setBorder(Rectangle.BOX);
        rect.setBorderWidth(2);
        canvas.rectangle(rect);
        document.close();
    }
}


rectangles

JAVA

JAVA
/**
 * Example written by Bruno Lowagie in answer to:
 * http://stackoverflow.com/questions/24582887/rectangle-overlapping-in-itext-pdf-generating
 */
package sandbox.objects;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import sandbox.WrapToTest;

@WrapToTest
public class Rectangles {
    public static final String DEST = "results/objects/rectangles.pdf";
    
    public static void main(String[] args) throws IOException,
            DocumentException {
        File file = new File(DEST);
        file.getParentFile().mkdirs();
        new Rectangles().createPdf(DEST);
    }
    
    public void createPdf(String dest) throws IOException, DocumentException {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
        document.open();
        float llx = 36;
        float lly = 700;
        float urx = 200;
        float ury = 806;
        PdfContentByte canvas = writer.getDirectContent();
        Rectangle rect1 = new Rectangle(llx, lly, urx, ury);
        rect1.setBackgroundColor(BaseColor.LIGHT_GRAY);
        rect1.setBorder(Rectangle.BOX);
        rect1.setBorderWidth(1);
        canvas.rectangle(rect1);
        Rectangle rect2 = new Rectangle(llx + 60, lly, urx, ury - 40);
        rect2.setBackgroundColor(BaseColor.DARK_GRAY);
        rect2.setBorder(Rectangle.BOX);
        rect2.setBorderColor(BaseColor.WHITE);
        rect2.setBorderWidth(0.5f);
        canvas.rectangle(rect2);
        document.close();
    }
}


rectangleincell

JAVA

JAVA
/**
 * Example written by Bruno Lowagie in answer to:
 * http://stackoverflow.com/questions/21625435/c-sharp-add-rectangle-into-pdfpcell-itextsharp
 * 
 * Adding a Rectangle object inside a table cell.
 */
package sandbox.objects;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfTemplate;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import sandbox.WrapToTest;

@WrapToTest
public class RectangleInCell {
    public static final String DEST = "results/objects/rectangle_in_cell.pdf";
    
    public static void main(String[] args) throws IOException,
            DocumentException {
        File file = new File(DEST);
        file.getParentFile().mkdirs();
        new RectangleInCell().createPdf(DEST);
    }
    
    public void createPdf(String dest) throws IOException, DocumentException {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
        document.open();
        document.add(new Paragraph("Option 1:"));
        PdfPTable table = new PdfPTable(3);
        table.addCell("A rectangle:");
        PdfTemplate template = writer.getDirectContent().createTemplate(120, 80);
        template.setColorFill(BaseColor.RED);
        template.rectangle(0, 0, 120, 80);
        template.fill();
        writer.releaseTemplate(template);
        table.addCell(Image.getInstance(template));
        table.addCell("The rectangle is scaled to fit inside the cell, you see a padding.");
        document.add(table);
        document.add(new Paragraph("Option 2:"));
        table = new PdfPTable(3);
        table.addCell("A rectangle:");
        PdfPCell cell = new PdfPCell(Image.getInstance(template));
        table.addCell(cell);
        table.addCell("The rectangle keeps its original size, but can overlap other cells in the same row.");
        document.add(table);
        document.add(new Paragraph("Option 3:"));
        table = new PdfPTable(3);
        table.addCell("A rectangle:");
        cell = new PdfPCell(Image.getInstance(template), true);
        table.addCell(cell);
        table.addCell("The rectangle is scaled to fit inside the cell, no padding.");
        document.add(table);
        PdfContentByte cb = writer.getDirectContent();
        cb.moveTo(228, 810);
        cb.lineTo(338, 810);
        cb.stroke();
        document.close();
    }
}
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.