【问题标题】:Java iText Image positionJava iText 图像位置
【发布时间】:2011-04-28 08:36:11
【问题描述】:

我有:

   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");
    }

我想在图片的右上角设置文字。我该怎么做?

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

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

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

【问题讨论】:

  • 这是一个pdf文件,doc是Document doc = new Document(PageSize.A4);

标签: java itext


【解决方案1】:

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

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

具体细节

要给Image 一个通用标签,您必须将它包装在一个块中:

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

然后您设置一个带有 onGenericTag 回调的 PdfPageEvent 处理程序,该回调将绘制您的文本:

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

PdfPageEventHelperPdfPageEvent 接口的空实现。我们覆盖我们关心的方法,然后离开。

【讨论】:

    猜你喜欢
    • 2012-10-12
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    相关资源
    最近更新 更多