IText Pdf生成中的矩形重叠

时间:2014-07-05 04:09:54

标签: java pdf itext

我尝试在图像中创建矩形,当我尝试使用坐标创建矩形时 两个矩形一个接一个地放置。

以下是我如何创建Rectangle的代码。

当我给出两个矩形的坐标时,它们会一个接一个地生成,我希望它们像图像一样重叠。我怎么能做到?

                PdfWriter writer= PdfWriter.getInstance(document, new FileOutputStream(filename));
                document.open();

                PdfContentByte cb = writer.getDirectContent();
                Rectangle rect,rect1;
                rect = new Rectangle(p1,p2,p3,p4); // CO-ORDINATES OF RECTANGLE
                rect.setBorder(Rectangle.BOX);
                cb.rectangle(rect);

enter image description here

1 个答案:

答案 0 :(得分:1)

请查看Rectangles示例,了解如何创建类似rectangles.pdf的PDF:

enter image description here

创建矩形时,需要左下角和矩形右上角的坐标。例如:

float llx = 36;
float lly = 700;
float urx = 200;
float ury = 806;

您已经知道需要PdfContentByte个实例来绘制第一个矩形:

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);

为清楚起见,我定义了背景颜色,并将边框宽度设置为1 pt。

现在,当您想要添加一个与问题中描述的方式重叠的额外矩形时,您需要更改llxury值。那是基础数学。例如:

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);

为了确保你看到差异,我现在使用了另一种背景颜色,我定义了0.5 pt作为边框宽度,白色作为边框颜色。

它没有比这更简单。