使用itext5将文本添加到PDF中的矩形

时间:2017-02-14 10:48:20

标签: java pdf itext rectangles

PdfContentByte canvas = writer.getDirectContent();
Rectangle rect = new Rectangle(0, 805, 594, 820);
rect.setBorder(Rectangle.BOX);
rect.setBorderWidth(1);
rect.setBackgroundColor(BaseColor.GRAY);
rect.setBorderColor(BaseColor.GREEN);

ColumnText ct = new ColumnText(canvas);
ct.setSimpleColumn(rect);
Font catFont = new Font(Font.FontFamily.TIMES_ROMAN, 18,Font.BOLD);

ct.addElement(new Paragraph("Your Text Goes here!! ",catFont));
ct.go();
canvas.rectangle(rect);

document.newPage();
document.close();

这是我的代码,这里我试图在矩形中添加文本。它没用!创建了矩形,但文本没有显示在pdf页面的任何地方。

1 个答案:

答案 0 :(得分:1)

您的代码存在一些问题,导致文字无法显示。

首先,在添加文本后将矩形添加到画布。灰色背景将覆盖任何绘制的文本,将其隐藏起来。

其次,您的字体大小对于列边界而言太大,因此不会显示任何文本。 您可以使矩形变大,文本将显示或减小字体的大小。

例如,以下内容应该有效,因为我增加了矩形高度并将canvas.rectangle()调用移到了ColumnText.go()之前:

Rectangle rect = new Rectangle(0, 780, 494, 820);
rect.setBorder(Rectangle.BOX);
rect.setBorderWidth(1);
rect.setBackgroundColor(BaseColor.GRAY);
rect.setBorderColor(BaseColor.GREEN);
canvas.rectangle(rect);

ColumnText ct = new ColumnText(canvas);
ct.setSimpleColumn(rect);
Font catFont = new Font(Font.FontFamily.TIMES_ROMAN, 18, Font.BOLD);
ct.addElement(new Paragraph("Your Text Goes here!! ", catFont));
ct.go();