使用Java iText在圆圈内插入多个段落和图像

问题描述 投票:0回答:1

我想使用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();
java itext
1个回答
0
投票

Why don't you see your text?

您将填充颜色设置为白色:

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

确实在白色的白色中绘制文字......

如果删除cb.setRGBColorFill指令(或选择明显不同的填充颜色),您将看到您的文字:

screen shot

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

Why don't you see your image?

因为你不添加它!

如果你把它添加到你的PdfContentByte cb

    Image img = Image.getInstance("Symbol.png");
    img.setAbsolutePosition(270f, 740f); 
    img.scaleAbsolute(60, 34);
    cb.addImage(img);

结果变成这样:

screen shot

(我显然没有你的图像,所以我使用一个简单的示例图像。)

© www.soinside.com 2019 - 2024. All rights reserved.