PDFBox:如何在填充矩形的顶部绘制文本?

dav*_*823 3 java pdfbox

我正在尝试使用Java和PDFBox将一些文本绘制到PDF文件,并为文本设置背景颜色.我知道如何绘制文本和绘制填充的矩形,但是当我尝试在与矩形相同的位置绘制文本时,文本永远不会显示.例:

//draw rectangle
content.setNonStrokingColor(200, 200, 200); //gray background
content.fillRect(cursorX, cursorY, 100, 50);

//draw text
content.setNonStrokingColor(0, 0, 0); //black text
content.beginText();
content.setFont(family, fontPt);
content.moveTextPositionByAmount(cursorX, cursorY);
content.drawString("Test Data");
content.endText();
Run Code Online (Sandbox Code Playgroud)

文字永远不会出现.它总是被矩形覆盖.有关如何在矩形顶部绘制文本的任何想法?

编辑:正如Mkl在回答中提到的,我提供的代码实际上是有效的.我的问题最终是代码处于循环中,为每一行绘制背景,但背景是绘制在前一行,而不是当前行,覆盖以前的文本.我只需要在循环中改变事件的顺序.这个问题应该删除吗?其他人似乎不太可能觉得它有用.

mkl*_*mkl 8

您展示的代码有效.

我让它像这样运行:

PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDPageContentStream content = new PDPageContentStream(document, page);
PDFont font = PDType1Font.HELVETICA_BOLD;

int cursorX = 70;
int cursorY = 500;

//draw rectangle
content.setNonStrokingColor(200, 200, 200); //gray background
content.fillRect(cursorX, cursorY, 100, 50);

//draw text
content.setNonStrokingColor(0, 0, 0); //black text
content.beginText();
content.setFont(font, 12);
content.moveTextPositionByAmount(cursorX, cursorY);
content.drawString("Test Data");
content.endText();

content.close();
document.save(new File("textOnBackground.pdf"));
document.close();
Run Code Online (Sandbox Code Playgroud)

(DrawOnBackground.java)

结果如下:

在此输入图像描述

因此,您的问题的原因超出了您提供的代码.

PS:我使用的是PDFBox 1.8.10.