Java iText图像位置

Java iText图像位置,java,itext,Java,Itext,我有: 我想在图像的右上角设置文本。我该怎么做 艾德: 经过数小时的思考,我找到了肮脏的解决方案: Image i = Image.getInstance("tabelka.png"); i.scalePercent(25, 25); for(int i=0; i<= 5; i++) { doc.add(i); content.moveTo(50, ??);////// <-------------- HOW T

我有:

我想在图像的右上角设置文本。我该怎么做

艾德: 经过数小时的思考,我找到了肮脏的解决方案:

   Image i = Image.getInstance("tabelka.png");
        i.scalePercent(25, 25);
    for(int i=0; i<= 5; i++)
    {
        doc.add(i);

        content.moveTo(50, ??);////// <-------------- HOW TO CHECK THE Y POSITION
        content.showText("skowron-line");
    }

如果您知道更好的解决方案,请告诉我。

要知道给定元素在页面上的位置,您需要给它一个通用标记,并向您的PdfWriter注册一个PdfPageEvent

要在特定位置绘制文本,必须将其直接绘制到PdfContentByte。请注意,当您仍然可以构建段落并调用ColumnText.showTextAligned时,direct并不是那么直接

具体到细节

要为图像提供通用标记,必须将其包装在块中:

Image img = Image.getInstance("tabelka.png");
img.scalePercent(25, 25);
float start = x;
for(int i =1; i<= 5; i++)
{
  start = (x - (img.getHeight() * 0.25f) * i);
}
然后,使用onGenericTag回调设置PdfPageEvent处理程序,该回调将绘制文本:

Chunk imgChunk = new Chunk( img, 0, 0 );
imgChunk.setGenericTag("imgTag");

PdfPageEventHelper是PdfPageEvent接口的空实现。我们覆盖了我们所关心的方法,然后离开。

这是一个pdf文件,doc是Document doc=new DocumentPageSize.A4;
myPdfWriter.setPageEvent( new PdfPageEventHelper() {
  public void onGenericTag(PdfWriter writer, Document doc, Rectangle chunkRect, String tag ) {
    if ("imgTag".equals(tag)) {
      // Draw your text into that rect.
      ColumnText.showTextAligned(writer.getOverContent(), Element.ALIGN_LEFT, paragraph,
        chunkRect.getLeft() + someOffsetX, chunkRect.getTop() - someOffsetY, 0f );
    }
  }
} );