【问题标题】:Rectangle Overlapping in IText Pdf GeneratingIText Pdf生成中的矩形重叠
【发布时间】:2014-07-05 04:09:53
【问题描述】:

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

这是我如何创建矩形的代码。

当我为两个一个接一个生成的矩形提供坐标时,我希望它们像图像中一样重叠。我怎样才能做到?

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

【问题讨论】:

  • 您能否解释一下“任何人都可以帮助如何使矩形重叠?”的含义?
  • 感谢桑托斯的回复,当我为两个一个接一个生成的矩形提供坐标时,我希望它们像图像中一样重叠..
  • 有道理。请更新问题,而不是将其添加为评论。
  • 不过,这是一个奇怪的问题,因为答案很简单。我会做一个例子并发布一个答案。

标签: java pdf itext


【解决方案1】:

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

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

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 定义为边框宽度,将白色定义为边框颜色。

没有比这更简单的了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-04
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 2014-05-13
    • 1970-01-01
    • 2018-11-02
    相关资源
    最近更新 更多