gpt4 book ai didi

java - ITextPDF - 矩形颜色重叠/隐藏 block 的文本

转载 作者:行者123 更新时间:2023-12-02 02:26:02 24 4
gpt4 key购买 nike

我需要的是在 PDF 的特定坐标集中绘制多个圆角矩形。我用过this example (IMDB 之一)动态获取 Chunks' 坐标(使用 PdfPageEvent 及其 onGenericTag() 方法)。它完美地获取了 block 的坐标并将矩形放置在它们必须在的位置。当我设置它们的颜色时,问题就出现了,颜色完全隐藏了文本。我知道文本在那里,因为我实际上能够复制它们。如果我不应用颜色,文本是可见的。

如果我不应用颜色,它们的实际外观是这样的:

enter image description here

如果我应用颜色,这就是它们的外观(这就是它们应该的外观,但包括文本): enter image description here

忽略矩形大小的差异,我只是通过示例覆盖了原始文本,但原始文本显示得很完美。为什么文字会被隐藏?我知道这是可以完成的,因为这个例子,但我不知道我做错了什么。我使用的是5.5.13版本。

这就是我创建 block 并将其添加到段落中的方式:

List<Chunk> chunksList = new ArrayList<>(); //rects
Chunk rdChunk;
for(Person rd: persons) {
rdChunk = new Chunk(rd.getName(), textFont);
rdChunk.setGenericTag(rd.getName());
chunksList .add(rdChunk);
}
document.add(createParagraph("as: ", chunksList , basicLeftIndentation));

private Paragraph createParagraph(String field, List<Chunk> chunks, long leftIndentation) {

Paragraph paragraph = new Paragraph();

paragraph.add(new Chunk(field, labelFont));
for(Chunk chunk: chunks) {
paragraph.add(new Chunk(" "));
paragraph.add(chunk);
}
paragraph.setIndentationLeft(leftIndentation);

return paragraph;
}

这就是我使用 PdfPageEvent 接口(interface)的方式:

@Override
public void onGenericTag(PdfWriter writer, Document document, Rectangle rect, String text) {
int[] colors;
switch(text) {

case "XX":
colors = new int[]{142, 166, 207};
break;
case "XY":
colors = new int[]{207, 188, 142};
break;

drawRectangle(writer.getDirectContent(), rect, colors);
}

public void drawRectangle(PdfContentByte content, Rectangle rect, int[] colors) {

content.saveState();
content.roundRectangle(rect.getLeft() -2,
rect.getBottom() - 3,
rect.getWidth() + 4,
rect.getHeight() + 4, 7f);
content.setRGBColorFill(colors[0], colors[1], colors[2]);
content.fill();
content.restoreState();
}

最佳答案

问题已解决,我正在打电话

writer.getDirectContent();

而不是

writer.getDirectContentUnder();

关于java - ITextPDF - 矩形颜色重叠/隐藏 block 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57253936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com