我想使用java itext生成CD的pdf标签。我已画出圆圈,但无法在圆圈内设置图像和多个段落。 以下是代码段。code snippet
String printingPath = "CD_label.pdf";
Document document = new Document(new Rectangle(PageSize.A4));
PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream(printingPath));
document.open();
PdfContentByte cb = writer.getDirectContent();
cb.setRGBColorFill(0xFF, 0xFF, 0xFF);
BaseColor colorval = new BaseColor(102,178,255);
cb.setColorStroke(colorval);
cb.circle(300.0f, 650.0f, 150.0f);
cb.circle(300.0f, 650.0f, 20.0f);
cb.stroke();
//cb.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA,BaseFont.CP1257,BaseFont.EMBEDDED), 10);
//cb.beginText();
//cb.resetRGBColorStroke();
//cb.setTextMatrix(320, 420);
//cb.showText("Text inside cd");
// ColumnText.showTextAligned(cb, Element.ALIGN_LEFT,new Phrase("Hello itext"),50, 700, 0); cb.endText();
Image img = Image.getInstance("Symbol.png");
img.setAbsolutePosition(270f, 740f);
img.scaleAbsolute(60, 34);
document.close();
答案 0 :(得分:0)
您将填充颜色设置为“白色”:
cb.setRGBColorFill(0xFF, 0xFF, 0xFF);
(通常)通过填充以某种字体定义的字形轮廓来绘制文本。因此,您未注释的文本绘图代码
cb.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA,BaseFont.CP1257,BaseFont.EMBEDDED), 10);
cb.beginText();
cb.resetRGBColorStroke();
cb.setTextMatrix(320, 420);
cb.showText("Text inside cd");
ColumnText.showTextAligned(cb, Element.ALIGN_LEFT,new Phrase("Hello itext"),50, 700, 0);
cb.endText();
会在WHITE上的WHITE上绘制文本...
如果删除该cb.setRGBColorFill
指令(或选择明显不同的填充颜色),则会看到文本:
(点(320,420)显然在以中心(300,650)和半径为150的圆之外,因此“在CD内的文本”文本也是...) >
另一个问题:ColumnText.showTextAligned
启动其自己的文本对象,因此要创建有效的PDF,必须将其移至cb.endText()
之后:
cb.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA,BaseFont.CP1257,BaseFont.EMBEDDED), 10);
cb.beginText();
cb.resetRGBColorStroke();
cb.setTextMatrix(320, 420);
cb.showText("Text inside cd");
cb.endText();
ColumnText.showTextAligned(cb, Element.ALIGN_LEFT,new Phrase("Hello itext"),50, 700, 0);
因为您没有添加它!
如果将其添加到PdfContentByte cb
Image img = Image.getInstance("Symbol.png");
img.setAbsolutePosition(270f, 740f);
img.scaleAbsolute(60, 34);
cb.addImage(img);
结果变成这样:
(我显然没有您的图像,所以我使用一个简单的示例图像。)