Добавить фоновое изображение и добавить текст на изображение

Я новичок в библиотеке iText. Мое требование: мой сервлет создаст лист меток (PDF). Это добавит изображение на всю страницу документа и текст в определенное место на изображении документа.

Пожалуйста помоги?


person Amar    schedule 29.07.2013    source источник
comment
Книга iText в действии — 2-е издание — отличный ресурс для всех, кто использует iText. Вы также найдете источники всех образцов в книге на этом веб-сайте. Кроме того, на сайте издателя вы найдете 2 важных примера глав, которые можно скачать бесплатно.   -  person mkl    schedule 29.07.2013
comment
Это моя функция private static void addContent(PdfContentByte canvas, PdfContentByte text, Document document) { Image img = Image.getInstance("07.png"); img.scaleToFit(PageSize.A4.height(), PageSize.A4.width()); img.setAbsolutePosition(1, 1); canvas.addImage(img); canvas.saveState(); canvas.setCMYKColorFill(0x00, 0x00, 0x00, 0x80); BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED); text.beginText(); text.setFontAndSize(bf, 18); text.lineTo(1, 1); text.showText("This is Test"); text.endText(); document.add(img);}   -  person Amar    schedule 29.07.2013
comment
Изображение загружено, но я не могу установить текст в определенной позиции   -  person Amar    schedule 29.07.2013


Ответы (1)


Непонятно, о чем параметр text. Возможно, вы выбрали прямое содержание, которое идет под изображением, но это не главная проблема.

Вы должны были прочитать некоторую документацию, потому что вы используете beginText(), setFontAndSize(), showText() и endText(), но вы не очень хорошо читали документацию, потому что:

(1) Вы используете lineTo() без moveTo() сначала и без stroke() после. Другими словами: вы создаете странный путь, который никогда не рисуется.

(2) Вы используете showText(), но я не вижу, чтобы вы где-либо определяли координаты для текста. Что случилось с вашим методом setTextMatrix()?

(3) Вы новичок, но вместо простого кода, например:

ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT,
    new Phrase("This is a test"), 100, 100, 0);

Похоже, вы хотите научиться бегать до того, как научитесь ходить.

Кроме того: вы, вероятно, используете старую версию iText, потому что вы не упоминаете, что исключение возникает, когда вы используете недопустимый оператор lineTo() внутри текстового блока. Вы не можете использовать lineTo() внутри последовательности beginText()/endText().

Пожалуйста, следуйте советам mkl и сначала прочитайте документацию.

person Bruno Lowagie    schedule 29.07.2013