Как добавить контент в PDF с помощью iText PdfStamper - PullRequest
7 голосов
/ 18 ноября 2011

Я разрабатываю систему, в которой мне нужно добавить несколько изображений в существующий документ PDF.

Это прекрасно работает с iText 5.1.3, но по какой-то причине в PDF, который содержит отсканированное изображениеэто не добавит ни одного изображения.

Вот ссылка на PDF Document , который нельзя изменить с помощью PdfStamper

, а вот код

  PdfReader reader = new PdfReader("Registro celular_OR.pdf");
  PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("DocStamped.pdf"));
  Image img = Image.getInstance("someImage.jpg");
  img.setAbsolutePosition(0, 0);
  img.scaleAbsolute(50f, 50f);
  PdfContentByte over = null;

  int total = reader.getNumberOfPages() + 1;
  for(int i = 1; i < total; i++) {
    System.out.println("Procesando Pagina: " + i);
    over = stamper.getOverContent(i);
    over.addImage(img);

    over.beginText();
    BaseFont bf_times = BaseFont.createFont(BaseFont.TIMES_ROMAN, "Cp1252", false);
    over.setFontAndSize(bf_times, 8);
    over.showTextAligned(PdfContentByte.ALIGN_CENTER, "TEXTO PRUEBA", 50, 50, 0);
    over.endText();
  }
  stamper.close();

1 Ответ

7 голосов
/ 04 октября 2015

Страница PDF не обязательно должна иметь свой левый нижний угол на (0, 0).Это может быть где угодно в системе координат.Таким образом, страница А4 может быть (0, 0, 595, 842), но она также может быть (1000, 2000, 1595, 2842).

. Вы позиционируете изображение на (0, 0):

img.setAbsolutePosition(0, 0);

Но страница этогодокумент определен как (0, 15366, 469, 15728).Изображение фактически добавляется в выходной документ, но оно находится за пределами видимой области страницы.

Для позиционирования изображения необходимо получить координаты страницы.Внутри цикла сделайте следующее:

img.setAbsolutePosition(reader.getPageSize(i).getLeft(), reader.getPageSize(i).getBottom());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...