2012-09-18 28 views
1

我正在使用com.itextpdf.text.*生成pdf文件以下是我的代碼,其中創建PDF文件的標題和標題higlighted和行,我想要做的是,在頂部,與其他顏色的行,如何做到這一點,使用com.itextpdf.text.*如何在java中使用替代彩色行和圖片在頂部創建pdf文件

response.setHeader("Content-disposition", "attachment; filename=\"" + reportName + ".pdf\""); 
     response.setContentType("application/pdf"); 
     PdfWriter.getInstance(document,response.getOutputStream()); 

     try { 
      document.open(); 
      addTitlePage(document, reportName); 

      //float[] colsWidth = {1.5f,3f,4f,4f,2f}; 

      List<Float> colsWidth = new ArrayList<Float>(); 
      int iterator = 1; 
      while (iterator <= headerMap.size()) { 
       if(iterator==1){ 
        colsWidth.add(1.5f); 
       }else{ 
       colsWidth.add(3f); 
       } 
       iterator++; 
      } 
      float[] floatArray = ArrayUtils.toPrimitive(colsWidth.toArray(new Float[0]), 0.0F); 

      PdfPTable table = new PdfPTable(floatArray); 
      table.setWidthPercentage(98); 
      table.setHorizontalAlignment(Element.ALIGN_CENTER); 

      PdfPCell c1 = new PdfPCell(); 
      for (Iterator it = headerMap.keySet().iterator(); it.hasNext();) { 
       String headerName = (String) headerMap.get(it.next()); 
       c1 = new PdfPCell(new Phrase(headerName, headerFont)); 
       c1.setBackgroundColor(BaseColor.LIGHT_GRAY); 
       table.addCell(c1); 
      } 
      table.setHeaderRows(1); 
      table = custDAO.creadPDFTable(query, table); 
      document.add(table); 
      document.addAuthor(userViewModel.getUsername()); 
      document.addCreationDate(); 
      document.addCreator("POC"); 
      document.close(); 
      response.flushBuffer(); 

public PdfPTable creadPDFTable(String query,PdfPTable table){ 
     int numberOfColumns=0,sno=1; 
     Connection connection = getConnection(); 
     if (connection != null) { 
      try { 
       PreparedStatement reportTablePS = connection.prepareStatement(query); 
       ResultSet reportTable_rst = reportTablePS.executeQuery(); 
       ResultSetMetaData reportTable_rsmd = reportTable_rst.getMetaData(); 
       numberOfColumns = reportTable_rsmd.getColumnCount(); 
       while (reportTable_rst.next()) { 
        table.addCell(new PdfPCell(new Paragraph(String.valueOf(sno), textFont))); 
          for (int columnIterator = 1; columnIterator <= numberOfColumns; columnIterator++) { 
           String column = reportTable_rst.getString(columnIterator); 
           table.addCell(new PdfPCell(new Paragraph(column, textFont))); 
          } 
          sno++; 
      } 
      } catch (Exception ex) { 
       ex.printStackTrace(); 
      }finally { 
       try { 
        closeConnection(connection, null, null); 
       } catch (Exception ex) { 
        ex.printStackTrace(); 
       } 
      } 
     } 
     return table; 
    } 

private static void addTitlePage(Document document, String reportName) throws DocumentException { 
     Paragraph preface = new Paragraph(); 
     addEmptyLine(preface, 1); 
     /** 
     * Lets write a big header 
     */ 
     Paragraph paragraph = new Paragraph(reportName, titleFont); 
     paragraph.setAlignment(Element.ALIGN_CENTER); 
     document.add(paragraph); 

     /** 
     * Add one empty line 
     */ 
     addEmptyLine(preface, 1); 
     document.add(preface); 
    } 
    private static void addEmptyLine(Paragraph paragraph, int number) { 
     for (int i = 0; i < number; i++) { 
      paragraph.add(new Paragraph(" ")); 
     } 
    } 

當我我得到下面的異常使用以下「的getOutputStream()已經呼籲該響應」創建圖像的PDF文件

我想用它來插入圖像。

  Image image = Image.getInstance(path+"images/abi.png"); 
      image.setAbsolutePosition(40f, 770f); 
      image.scaleAbsolute(70f, 50f); 
      document.add(image); 

那麼該怎麼做呢?

UPDATE:

我想創建像this一個PDF文件,我只是想在頂部和行與其他顏色這樣的添加圖片。

+0

+1瞭解詳細的說明。 – amod

回答

1

您可以使用XSLFO和Apache FOP。它爲我工作。爲了添加圖像,我在XSL中完成了更改。

供參考訪問 http://www.codeproject.com/Articles/37663/PDF-Generation-using-XSLFO-and-FOP

+0

@learner在頂部添加圖像請在正文部分的第一部分添加圖像你的xsl。我最近爲我的代碼和它的工作做了這個。如果你想在標題上顯示該圖像,請將其添加到標題部分。 – amod

相關問題