Java 在iText元素上添加阴影效果
我对Java中的iText有一些问题。我需要生成一个带有阴影的单元格或矩形,如本例所示:Java 在iText元素上添加阴影效果,java,itext,cell,shadow,rectangles,Java,Itext,Cell,Shadow,Rectangles,我对Java中的iText有一些问题。我需要生成一个带有阴影的单元格或矩形,如本例所示: 4和60位于某种带阴影的单元格或矩形中。我不知道怎么做。有什么帮助吗?最简单的方法可能是使用带有通用标记和PdfPageEvent的块。这样,当块位于页面上时,您将得到一个事件回调。回调将为您提供块的坐标(矩形),允许您在正确的位置绘制边框和阴影 绘制黑色边框和灰色阴影的事件处理程序示例: class ShadowEvent extends PdfPageEventHelper { @Overri
4和60位于某种带阴影的单元格或矩形中。我不知道怎么做。有什么帮助吗?最简单的方法可能是使用带有通用标记和
PdfPageEvent
的块。这样,当块位于页面上时,您将得到一个事件回调。回调将为您提供块的坐标(矩形)
,允许您在正确的位置绘制边框和阴影
绘制黑色边框和灰色阴影的事件处理程序示例:
class ShadowEvent extends PdfPageEventHelper {
@Override
public void onGenericTag(PdfWriter writer, Document document,
Rectangle rect, String text) {
PdfContentByte canvas = writer.getDirectContent();
// Paddings for the border
int paddingHorizontal = 20;
int paddingVertical = 5;
// Width of the shadow
int shadowwidth = 5;
// Calculate border location and size
float left = rect.getLeft() - paddingHorizontal;
float bottom = rect.getBottom() - paddingVertical;
float width = rect.getWidth() + 2*paddingHorizontal;
float height = rect.getHeight() + 2*paddingVertical;
canvas.saveState();
canvas.setColorFill(BaseColor.GRAY);
// Draw the shadow at the bottom
canvas.rectangle(left + shadowwidth, bottom - shadowwidth, width, shadowwidth);
canvas.fill();
// Draw the shadow at the right
canvas.rectangle(left + width, bottom - shadowwidth, shadowwidth, height);
canvas.fill();
canvas.setColorStroke(BaseColor.BLACK);
// Draw the border
canvas.rectangle(left, bottom, width, height);
canvas.stroke();
canvas.restoreState();
}
}
这显示了如何使用通用标记:
Document doc = new Document();
PdfWriter pdfWriter = PdfWriter.getInstance(doc, outfile);
pdfWriter.setPageEvent(new ShadowEvent());
doc.open();
Chunk c = new Chunk("60");
c.setGenericTag("shadow");
doc.add(c);
doc.close();
(请注意,onGenericTag
方法的text
参数将包含字符串
,该字符串已通过setGenericTag
设置为块
。这是“阴影”
在上面的示例中。它允许区分不同的标记。因为我们这里只使用了一个标记,所以我没有使用text
参数。)
该示例的结果如下所示: