Не знаю, как создать центрированный водяной знак «изображение + текст» в файлах PDF с помощью iText (Java) - PullRequest
1 голос
/ 04 октября 2011

Я использую библиотеку iText и пытаюсь добавить водяной знак внизу страницы.Водяной знак прост, он должен быть отцентрирован и имеет изображение слева и текст справа.

На данный момент у меня есть изображение И текст в формате png.Я могу рассчитать положение, в которое я хочу поместить изображение (по центру), вычисляя размер страницы и размер изображения, но теперь я хочу включить текст как текст AS (лучшая читаемость и т.изображение и текст в некотором компоненте, а затем рассчитать положение, как я делаю сейчас?Другие решения или идеи?

Вот мой актуальный код:

try {
        PdfReader reader = new PdfReader("example.pdf");
        int numPages = reader.getNumberOfPages();
        PdfStamper stamp = new PdfStamper(reader, new FileOutputStream("pdfWithWatermark.pdf"));

        int i = 0;
        Image watermark = Image.getInstance("watermark.png");
        PdfContentByte addMark;

        while (i < numPages) {
            i++;
            float x = reader.getPageSizeWithRotation(i).getWidth() - watermark.getWidth();
            watermark.setAbsolutePosition(x/2, 15);
            addMark = stamp.getUnderContent(i);
            addMark.addImage(watermark);
        }
        stamp.close();

    }
    catch (Exception i1) {
        logger.info("Exception adding watermark.");
        i1.printStackTrace();
    }

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 18 сентября 2012

тебе лучше проверить это:

import com.lowagie.text.*;
import java.io.*;
import com.lowagie.text.pdf.*;
import java.util.*;

class  pdfWatermark
{
  public static void main(String args[])
  {  
    try 
    {
      PdfReader reader = new PdfReader("text.pdf");
      int n = reader.getNumberOfPages();

      // Create a stamper that will copy the document to a new file
      PdfStamper stamp = new PdfStamper(reader, 
        new FileOutputStream("text1.pdf"));
      int i = 1;
      PdfContentByte under;
      PdfContentByte over;

      Image img = Image.getInstance("watermark.jpg");
      BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, 
        BaseFont.WINANSI, BaseFont.EMBEDDED);

      img.setAbsolutePosition(200, 400);

      while (i < n) 
      {
        // Watermark under the existing page
        under = stamp.getUnderContent(i);
        under.addImage(img);

        // Text over the existing page
        over = stamp.getOverContent(i);
        over.beginText();
        over.setFontAndSize(bf, 18);
        over.showText("page " + i);
        over.endText();

        i++;
      }

      stamp.close();

    }
    catch (Exception de) 
    {}
  }
}

( источник )

0 голосов
/ 04 октября 2011

немного уродливо, но разве вы не можете добавить изображение и текст в таблицу, а затем отцентрировать его?

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