是否可以使用iText在矩形中设置背景颜色的文本?
我有以下代码:
PdfContentByte canvas = writer.getDirectContent();
BaseColor bColor = new BaseColor(0xFF, 0xD0, 0x00);
canvas.setColorFill(bColor);
canvas.fill();
canvas.rectangle(rect.getLeft(), rect.getBottom() - 1.5f, rect.getWidth(), rect.getHeight());
canvas.stroke();
但颜色似乎被忽略了。我做错了什么?
答案 0 :(得分:2)
你正在以错误的顺序做事。
你需要:
您可以切换步骤1和2,但步骤3始终需要最后一次。
所以你应该调整你的代码:
PdfContentByte canvas = writer.getDirectContent();
BaseColor bColor = new BaseColor(0xFF, 0xD0, 0x00);
canvas.setColorFill(bColor);
canvas.rectangle(rect.getLeft(), rect.getBottom() - 1.5f, rect.getWidth(), rect.getHeight());
canvas.fillStroke();
请注意,这也是错误的:
PdfContentByte canvas = writer.getDirectContent();
BaseColor bColor = new BaseColor(0xFF, 0xD0, 0x00);
canvas.setColorFill(bColor);
canvas.rectangle(rect.getLeft(), rect.getBottom() - 1.5f, rect.getWidth(), rect.getHeight());
canvas.fill();
canvas.stroke();
在这种情况下,矩形将由canvas.fill()
填充,但它不会有任何边框,因为填充它时已经处理了使用rectangle()
方法创建的路径。在canvas.fill();
和canvas.stroke();
之间没有创建新路径,因此stroke()
运营商不会做任何事情。
答案 1 :(得分:1)
请放
canvas.setColorFill(bColor);
canvas.fill();
之后
canvas.rectangle(rect.getLeft(), rect.getBottom() - 1.5f, rect.getWidth(), rect.getHeight());