Java iText Положение изображения - PullRequest
0 голосов
/ 28 апреля 2011

у меня есть:

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

Если вы знаете лучшее решение, дайте мне знать.

1 Ответ

0 голосов
/ 29 апреля 2011

Чтобы узнать, где на странице находится данный элемент, вам нужно дать ему общий тег и зарегистрировать PdfPageEvent в вашем PdfWriter.

Чтобы нарисовать текст в определенном месте, вы должны нарисовать его непосредственно на PdfContentByte. Обратите внимание, что «напрямую» не так уж и просто, когда вы все еще можете построить абзац и вызвать ColumnText.showTextAligned().

В подробности

Чтобы дать Image универсальный тег, вы должны обернуть его во фрагмент:

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

Затем вы устанавливаете обработчик PdfPageEvent с обратным вызовом onGenericTag, который будет рисовать ваш текст:

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

PdfPageEventHelper - пустая реализация интерфейса PdfPageEvent. Мы переопределяем метод, который нам небезразличен, и мы уходим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...