@Override
   protected boolean report()
   {
      try
      {
         Document l_Document = m_Info.getDocument();

         Paragraph l_Title = new Paragraph(new Chunk(getTitle(), m_Info.getTitleFont()));
         l_Title.setAlignment(Element.ALIGN_CENTER);
         l_Title.setSpacingAfter(15f);
         l_Document.add(l_Title);
         
         int l_MaxCol = getTableData().getColumnCount();
         
         float[] l_Widths = new float[l_MaxCol];
         l_Widths[0]=0.2f;
         l_Widths[1]=0.3f;
         float l_WiRes=0.2f;
         if (l_MaxCol-2<3)
         {
            l_Widths[1]+=0.5f-((float)(l_MaxCol-2))*0.2f;
         }
         else
         {
            l_WiRes=0.5f/((float)(l_MaxCol-2));
         }
         for(int l_Col=2; l_Col<l_MaxCol; l_Col++)
         {
            l_Widths[l_Col]=l_WiRes;
         }
         PdfPTable l_Table = new PdfPTable(l_Widths);
         l_Table.setWidthPercentage(100);
         l_Table.getDefaultCell().setPadding(3);
         l_Table.getDefaultCell().setBorderWidth(1);
         l_Table.getDefaultCell().setNoWrap(false);
         l_Table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);

         for(int l_Col=0; l_Col<l_MaxCol; l_Col++)
         {
            addCell(l_Table, getTableData().getColumnName(l_Col));
         }
         l_Table.setHeaderRows(1);
         
         int l_MaxLine = getTableData().getRowCount();
         boolean l_Colored=true;
         for(int l_Line=0; l_Line<l_MaxLine; l_Line++)
         {
            if (l_Colored)
            {
               l_Table.getDefaultCell().setGrayFill(0.9f);
               l_Colored=false;
            }
            else
            {
               l_Table.getDefaultCell().setGrayFill(1.0f);
               l_Colored=true;
            }
            
            for(int l_Col=0; l_Col<l_MaxCol; l_Col++)
            {
               addCell(l_Table, getTableData().getValueAt(l_Line, l_Col).toString());
            }
         }

         l_Document.add(l_Table);
         
         Phrase l_Phrase=new Phrase("Commentaire:\n");
         l_Phrase.add("");
         l_Document.add(l_Phrase);
         
         l_Document.newPage();
         
         float l_Width=l_Document.getPageSize().getWidth();
         float l_Height=l_Document.getPageSize().getHeight();
         PdfContentByte l_contentByte = getWriter().getDirectContent();
         PdfTemplate l_template = l_contentByte.createTemplate(l_Width, l_Height);
         Graphics2D l_graphics2d = new PdfGraphics2D(l_template, l_Width, l_Height, new DefaultFontMapper());
         Rectangle2D l_rectangle2d = new Rectangle2D.Double(0, 0, l_Width, l_Height);

         getChart().draw(l_graphics2d, l_rectangle2d);

         l_graphics2d.dispose();
         l_contentByte.addTemplate(l_template, 0, 0);

         return true;
      }
      catch (DocumentException e)
      {
         e.printStackTrace();
      }
      
      return false;
   }