设置pdfptable中的列数

时间:2015-04-06 10:19:46

标签: c# pdf itext pdf-generation

我想在页面中仅显示 5列,在 pdftable 中仅显示下一页中的剩余列。我们可以设置pdftable中的列数吗?请帮助我实现这一目标。

2 个答案:

答案 0 :(得分:0)

请查看此PdfPTable constructor

  

public PdfPTable(int numColumns)

     

构造一个带有numColumns列的PdfPTable。

     

<强>参数:

     
      
  • numColumns - 列数
  •   

因此,如果您想创建一个包含5列的PdfPTable,则需要像这样创建PdfPTable

PdfPTable table = new PdfPTable(5);

当然,如果您已经拥有包含更多列的PdfPTable,那么您不能只使用以下行添加该表:

document.add(table);

以上行将添加所有列。

如果只想添加包含更多列的表的5列,则需要控制布局。您唯一的选择是使用writeSelectedRows()方法。

您可以找到有关如何使用此方法的示例here

float newY = table.writeSelectedRows(0, 5, 0, -1, 36, 806, canvas);

此方法将呈现表格的前5列(参数05的内容)和所有行(参数0和{{ 1}}是关于; -1表示:直到最后一行)。我们将表格-1x = 36添加到直接内容(y = 806)。

但是:当您在表格上执行完全控制时,您有责任确保表格适合页面。例如:如果并非所有行都适合页面,则表格将继续在页面的可见区域之外。

为避免这种情况,您应首先计算每行的高度。

另外:如果一张桌子没有覆盖整个页面,你必须跟踪Y位置。在上面的代码段中,表格末尾的Y位置为canvas

任何后续newY操作都会注意此document.add(),因此了解切换到绝对定位意味着您很重要不能指望iText自动进行定位。

答案 1 :(得分:0)

创建表格并从 PdfPTable 中获取列数

==> 创建函数或方法 GenerateFile()

 void GenerateFile()
    {

   string path = Application.dataPath + "/myfirstfile.pdf"; 
    if (File.Exists(path)) File.Delete(path);
    
//Create Document 
        var fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
        var document = new Document(PageSize.A4,10f,10f,10f,0f);
        var writer = PdfWriter.GetInstance(document, fileStream);
        document.Open();
        document.NewPage();
        var baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, 
        BaseFont.NOT_EMBEDDED);

//Create Table


 int noOfcoloumn = 5;
    PdfPTable mytable = new PdfPTable(noOfcoloumn);
    mytable .AddCell("Order ID"); //Row 1 Strat
    mytable .AddCell("Order Time");
    mytable .AddCell("User");
    mytable .AddCell("Order Status");
    mytable .AddCell("View");

    mytable .AddCell("OID3242");  //Row 2 Strat
    mytable .AddCell("04/03/2021 14:50:51");  
    mytable .AddCell("Atul R Patel"); 
    mytable .AddCell("Delivered"); 
    mytable .AddCell("ShowOrderItem"); 
        


  //Debug.Log("Total Number of Columns:-- " +table.NumberOfColumns);//[In Unity //Debuging]

    
    document.Add(mytable); // Add in to pdf file
    document.Add(Chunk.NEWLINE);
    
    Paragraph p1 = new Paragraph(string.Format("Total Number of Columns : {0}", 
    mytable.NumberOfColumns ));
    p1.Alignment = Element.ALIGN_CENTER;
    document.Add(p1);
    document.Close();
    writer.Close();

} enter image description here