2015-06-26 45 views
0

我想將pdfTable列的最後一列作爲一個新行並跨越從第二列開始到列的結尾。最後一列太大而無法將所有內容放在同一行上。 我使用itexsharp.pdf將pdfTable的最後一列轉換爲新行

**column1 column2 column3 
      column4........** 

代碼:

private String WritePDF(DataTable dt) 
{ 
    String fileName = ""; 

    //Creating iTextSharp Table from the DataTable data 
    PdfPTable pdfTable = new PdfPTable(m_PDFColumnCount); 
    pdfTable.DefaultCell.Padding = 3; 
    pdfTable.WidthPercentage = 100; 
    pdfTable.HorizontalAlignment = Element.ALIGN_LEFT; 
    pdfTable.DefaultCell.BorderWidth = 1; 


    this.BuildPDFHeader(pdfTable, "date"); 
    this.BuildPDFHeader(pdfTable, "time"); 
    this.BuildPDFHeader(pdfTable, "result"); 
    this.BuildPDFHeader(pdfTable, "fullname"); 
    this.BuildPDFHeader(pdfTable, "regarding"); 
    this.BuildPDFHeader(pdfTable, "datails"); 

    // add header row 

    //Adding DataRow 
    for (int intIndex = 0; intIndex < dt.Rows.Count; intIndex++) 
    { 
     dt.Rows[intIndex]["details"] = getplaintext(dt.Rows[intIndex]["details"].ToString()); 

     pdfTable.AddCell(dt.Rows[intIndex]["date"].ToString()); 
     pdfTable.AddCell(dt.Rows[intIndex]["time"].ToString()); 
     pdfTable.AddCell(dt.Rows[intIndex]["result"].ToString()); 
     pdfTable.AddCell(dt.Rows[intIndex]["fullname"].ToString()); 
     pdfTable.AddCell(dt.Rows[intIndex]["regarding"].ToString()); 

     PdfPCell cell = new PdfPCell(new Phrase(dt.Rows[intIndex]["details"].ToString())); 
     cell.Colspan = 5; 
     cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right 
     pdfTable.AddCell(cell); 
    } 

    String folderPath = "C:\\PDFs\\"; //should be in configfile. 

    fileName = String.Format("{0}{1}{2}",folderPath, dt.Rows[0]["id"].ToString(),".pdf"); 

    //Exporting to PDF 

    if (!Directory.Exists(folderPath)) 
    { 
     Directory.CreateDirectory(folderPath); 
    } 
    using (FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate)) 
    { 
     Document pdfDoc = new Document(PageSize.A4.Rotate());    
     PdfWriter.GetInstance(pdfDoc, stream); 
     pdfDoc.Open(); 
     pdfDoc.Add(pdfTable); 
     pdfDoc.Close(); 
     stream.Close(); 
    } 

    return fileName; 
} 

private void BuildPDFHeader(PdfPTable pdfTable, String strText) 
{ 
    PdfPCell cell = new PdfPCell(new Phrase(strText)); 
    cell.BackgroundColor = new iTextSharp.text.Color(240, 240, 240); 
    pdfTable.AddCell(cell); 
} 

回答

0

我已經解決了這樣的問題:

pdfTable.AddCell(dt.Rows[intIndex]["date"].ToString()); 
pdfTable.AddCell(dt.Rows[intIndex]["time"].ToString()); 
pdfTable.AddCell(dt.Rows[intIndex]["result"].ToString()); 
pdfTable.AddCell(dt.Rows[intIndex]["fullname"].ToString()); 
pdfTable.AddCell(dt.Rows[intIndex]["regarding"].ToString()); 
cell = new PdfPCell(new Phrase(dt.Rows[intIndex]["details"].ToString())); 
cell.Colspan = 6; 
pdfTable.AddCell(cell); 
+0

這是否回答你的問題?目前還不清楚爲什麼會發布這個答案。 –

+0

我在嘗試幾件事情後發現瞭解決方案。謝謝。我只是想和其他人分享。 –

+0

好吧,我已經更新了你的答案,這樣很明顯代碼可以解決你的問題。 –