2015-03-31 57 views
1

我目前使用導出1.6插件將我的SQL查詢數據導出到Grails中的PDF中。使用導出插件或iText將一個PDF頁面垂直劃分爲兩個相等部分:Grails

我也分層,但沒能找到確切的解決方案 -

我要生成動態多頁PDF,但頁面應該是 同樣分成相等的兩個部分vertically.I使用的文件。 newPage(),但這是將一個頁面分成兩個頁面 。

代碼snippet-

protected void exportData(OutputStream outputStream, List data, List fields) throws ExportingException{ 
     Rectangle left; 
     Rectangle right; 
     Document document = new Document(); 
     // step 2 
     PdfWriter writer = PdfWriter.getInstance(document, outputStream); 
     // step 3 
     document.open(); 
     // step 4 
     PdfContentByte canvas = writer.getDirectContent(); 
     ColumnText ct = new ColumnText(canvas); 
     int side_of_the_page = 0; 

     ct.setSimpleColumn(36, 36, 290, 806); 
     int paragraphs = 0; 
     while (paragraphs < 30) { 
      ct.addElement(new Paragraph(String.format("Paragraph %s: %s", ++paragraphs, TEXT))); 
      while (ColumnText.hasMoreText(ct.go())) { 
       if (side_of_the_page == 0) { 
        side_of_the_page = 1; 
        canvas.moveTo(297.5f, 36); 
        canvas.lineTo(297.5f, 806); 
        //canvas.colorStroke 
        canvas.stroke(); 
       } 
       else { 
        side_of_the_page = 0; 

        PdfPTable talble = new PdfPTable() 
        while(data.size()) 
        PdfPCell cell1 = new PdfPCell() 


        ct.addElement(data); 
        document.newPage(); 
       } 

       ct.setSimpleColumn(305, 36, 559, 806); 
      } 
     } 
     // step 5 
     document.close(); 
    } 



} 
+0

我不知道,但我覺得這是[iText的pageElement將並排]可能重複(http://stackoverflow.com/questions/23267063/itext-pageelement-placing-side-由端)。如果不是,請解釋爲什麼'ColumnText'不能解決你的問題(假設你已經嘗試過'ColumnText';我們不能告訴你,你不會告訴我們任何代碼)。 – 2015-03-31 15:27:33

+0

ColumnText有沒有簡單的基本例子?在使用ColumnText時,我無法將我的頁面分成兩個部分,獲取不同類型的錯誤,請爲此提供任何簡單示例。它將不勝感激。 – user3913652 2015-04-01 15:09:27

+0

我剛剛在回答以下問題時提出了一個問題:http://stackoverflow.com/questions/29378407/how-can-you-eliminate-white-space-in-multiple-columns-using-itextsharp – 2015-04-01 15:11:43

回答

1

您可以itextpdf-5.x.x.jar,而不是默認的Grails導出插件嘗試。

import com.itextpdf.text.Document; 
import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.Paragraph; 
import com.itextpdf.text.Rectangle; 
import com.itextpdf.text.pdf.ColumnText; 
import com.itextpdf.text.pdf.PdfContentByte; 
import com.itextpdf.text.pdf.PdfWriter;