[英]iText Rectangle with Black Font
我正在嘗試在iText中創建一個具有背景顏色和文本的矩形。
如果按原樣運行代碼,則會得到文本,但沒有背景色。 調用canvas.fillStroke()會填充背景色,但不顯示任何文本。
如何獲得背景顏色和字體?
public void createPdf() {
try(ByteArrayOutputStream os = new ByteArrayOutputStream()) {
try(PdfWriter writer = new PdfWriter(os)) {
try(PdfDocument pdf = new PdfDocument(writer)) {
try (Document document = new Document(pdf)) {
PdfPage page = pdf.addNewPage();
PageSize ps = pdf.getDefaultPageSize();
Text green = new Text("This text is green. ")
.setFontColor(new DeviceRgb(27,255,0));
Paragraph p = new Paragraph("This is the text added in the rectangle.");
p.add(green);
PdfCanvas canvas = new PdfCanvas(pdf.getFirstPage());
Color orange = new DeviceRgb(255, 100, 20);
canvas.setFillColor(orange);
Rectangle rect = new Rectangle(1f,ps.getHeight()-101f,ps.getWidth()-1f,100f );
new Canvas(canvas, pdf, rect)
.add(p);
canvas.rectangle(rect);
// canvas.fillStroke();
}
}
}
Files.write(new File("C:\\users\\tim\\file.pdf").toPath(), os.toByteArray(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
} catch(IOException e) {
throw new RuntimeException(e);
}
}
感謝mkl的評論
我要做的就是先填充矩形,然后再添加段落
public void createPdf() {
try(ByteArrayOutputStream os = new ByteArrayOutputStream()) {
try(PdfWriter writer = new PdfWriter(os)) {
try(PdfDocument pdf = new PdfDocument(writer)) {
try (Document document = new Document(pdf)) {
PdfPage page = pdf.addNewPage();
PageSize ps = pdf.getDefaultPageSize();
Text green = new Text("This text is green. ")
.setFontColor(new DeviceRgb(27,255,0));
Paragraph p = new Paragraph("This is the text added in the rectangle.");
p.add(green);
PdfCanvas canvas = new PdfCanvas(pdf.getFirstPage());
Color orange = new DeviceRgb(255, 100, 20);
canvas.setFillColor(orange);
Rectangle rect = new Rectangle(1f,ps.getHeight()-101f,ps.getWidth()-1f,100f );
Canvas rectangleCanvas = new Canvas(canvas, pdf, rect);
canvas.rectangle(rect);
canvas.fillStroke();
rectangleCanvas.add(p);
}
}
}
Files.write(new File("C:\\users\\tim\\file.pdf").toPath(), os.toByteArray(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
} catch(IOException e) {
throw new RuntimeException(e);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.