2015-05-19 51 views
0

我在OnEndPage中添加了表錐頁頭的創建。在表I中,RowSpan不是打印的,而其餘的是。OnEndPage事件和一個包含RowSpan的表

table.WriteSelectedRows (0, -1, pageSize.GetLeft (25), pageSize.GetTop (10), cb); 

如果我刪除RowSpan打印!

+0

是該表是否完成?表格不可打印的可能原因可能是您沒有完成行。向我們展示創建表格的代碼。 (另外:我會更正你的問題的標題:你不應該在'OnStartPage'上添加內容) –

+0

另外:你正在使用哪個版本的iTextSharp? Rowspan在過去一年中確實有所改善。如果你使用的是舊版本,那也可以解釋你的問題。 –

+0

版本是4.1.6.0 iTextSharp。謝謝 – memmo77

回答

0

這是我的代碼使用方法:

public override void OnEndPage(PdfWriter writer, Document document) 
    { 
     if (document.PageNumber != 1) 
     { 
      if (report.repeatHead) //ripete l'intestazione del report su tutte le pagine di stampa 
      { 
       repeatHead(writer, document); 
      } 
      else 
      { 
       if (document.PageNumber == 2) //ripete l'intestazione del report solo sulla second pagina dopo la copertina 
       { 
        repeatHead(writer, document); 
       } 
      }     
     } 
    } 

    public void repeatHead(PdfWriter writer, Document document) 
    { 
     //OnStartPage 
     base.OnStartPage(writer, document); 
     Rectangle pageSize = document.PageSize; 

     PdfPTable table = new PdfPTable(2); 
     //table.WidthPercentage = 100; 
     table.TotalWidth = pageSize.Width - 50; 
     table.DefaultCell.Border = Rectangle.NO_BORDER; 

     //impostazione larghezza celle 
     iTextSharp.text.Rectangle rect = PageSize.A4; 
     float pageWidth = rect.Width; 
     table.SetWidthPercentage(new float[] 
       { 
        (float).70 * pageWidth , 
        (float).30 * pageWidth, 
       }, rect); 

     //Cella nome banca 
     table.AddCell(CellTest(report.banca, 1, 2)); 
     //Cella descrizione indagine 
     table.AddCell(CellTest("Valore1", 0, 0)); 
     //Cella data apertura 
     table.AddCell(CellTest("Data apertura: " + DateTime.Now, 0, 0)); 
     //Cella descrizione 
     table.AddCell(CellTest("Descrizione", 0, 0)); 
     //Cella data chiusura 
     table.AddCell(CellTest("Data chiusura: " + DateTime.Now, 0, 0)); 

     table.WriteSelectedRows(0, -1, pageSize.GetLeft(25), pageSize.GetTop(10), cb); 
    } 

    private PdfPCell CellTest(string value, int colSpan, int rowSpan)    
    { 
     iTextSharp.text.Font font = FontFactory.GetFont("Arial"); 
     PdfPCell c = new PdfPCell(new Phrase(value, font)); 

     c.BorderWidthLeft = 1f; 
     c.BorderWidthTop = 1f; 
     c.BorderWidthRight = 1f; 
     c.BorderWidthBottom = 1f; 

     if (rowSpan != 0) { c.Rowspan = rowSpan; } 
     if (colSpan != 0) { c.Colspan = colSpan; } 

     return c; 
    } 

    public override void OnCloseDocument(PdfWriter writer, Document document) 
    { 
     base.OnCloseDocument(writer, document); 
     template.BeginText(); 
     template.SetFontAndSize(bf, 8);    
     template.SetTextMatrix(0, 0); 
     template.ShowText("" + (writer.PageNumber - 1)); 
     template.EndText(); 
    } 
+0

這是代碼產生錯誤的結果嗎?然後請將其編輯爲您的問題,而不是將其作爲答案發布。如果這段代碼證明了正確的結果,請編輯答案以表明您更改了哪些內容以使其正常工作。 – mkl

相關問題