2009-11-09 2 views
2

Я использую IText генерировать отчеты Pdf для данных в базе данных ...Вы можете установить фон изображенный на PdfPTable при использовании IText

Заголовок страницы ПРВА является изображением с текстом на изображение добавляется динамически, скажем, например, дата генерируемой ..

Любой знает, если мы можем установить фоновые изображения в таблицах типа PdfPTable в IText ..

Благодаря

ответ

4

Я знаю его очень поздно, но может помочь кто то. Вот как это сделать.

Создайте класс BGClass, реализуйте PdfPCellEvent и введите следующий метод.

@Override 
    public void cellLayout(PdfPCell arg0, Rectangle arg1, PdfContentByte[] arg2) { 
     try { 
      PdfContentByte pdfContentByte = arg2[PdfPTable.BACKGROUNDCANVAS]; 
      Image bgImage = Image.getInstance("URL_TO_YOUR_IMAGE"); 
      pdfContentByte.addImage(bgImage, arg1.getWidth(), 0, 0, arg1 
        .getHeight(), arg1.getLeft(), arg1.getBottom()); 

     } catch (BadElementException e) { 
      e.printStackTrace(); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (DocumentException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

В вашем главном классе, где вы создаете PDF, pdfpCell.setCellEvent (новый BGClass()); где pdfpCell - это ячейка, для которой требуется фоновое изображение.

+0

Помогли много ....... Удивительный ответ ........... Thankyou. – Hariprasath

0

Техника Прабхата имеет недостаток или два.

  1. Копия изображения добавляется в PDF для каждой ячейки. Сохраните возвращенное изображение между вызовами cellLayout, чтобы у вас была только одна копия. Если у вас есть таблица 10x10 и 10kb изображение, вы делаете в формате PDF 1mb вместо 10kb. Уч. И это на самом деле немного хуже, чем с дополнительными накладными расходами на все эти дополнительные объекты (не намного хуже, но измеримыми).
  2. Он должен плитировать изображение, по одному на ячейку.

Вам лучше пойти с PdfPTableEvent. Обратите внимание: если ваша таблица охватывает несколько страниц, ваш обработчик событий будет вызываться один раз для каждой таблицы. Параметры heights и widths немного забавны. Первое значение в каждом является абсолютной начальной позицией. Остальные значения действительно представляют собой высоты и ширину. Handy, но имена переменных немного вводят в заблуждение.

И имейте в виду, что каждый экземпляр изображения означает другую копию этого изображения в вашем PDF-файле. Сохраняйте их и повторно используйте их каждый раз, когда сможете.

Смежные вопросы