簡體   English   中英

PDFBox:如何在填充矩形的頂部繪制文本?

[英]PDFBox: How to draw text on top of a filled rectangle?

我正在嘗試使用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();

文字永遠不會出現。 它總是被矩形覆蓋。 有關如何在矩形頂部繪制文本的任何想法?

編輯:正如Mkl在回答中提到的,我提供的代碼實際上是有效的。 我的問題最終是代碼處於循環中,為每一行繪制背景,但背景是繪制在前一行,而不是當前行,覆蓋以前的文本。 我只需要在循環中改變事件的順序。 這個問題應該刪除嗎? 其他人似乎不太可能覺得它有用。

您展示的代碼有效。

我讓它像這樣運行:

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();

DrawOnBackground.java

結果如下:

在此輸入圖像描述

因此,您的問題的原因超出了您提供的代碼。

PS :我使用的是PDFBox 1.8.10。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM