【问题标题】:how to place two tables side by side using itext sharp如何使用 itextsharp 并排放置两个表
【发布时间】:2014-01-06 06:40:14
【问题描述】:

我必须创建一个包含两个表的 pdf 文件。并且这两个表应该水平放置在文档中。我已经尝试过这样,

   var doc1 = new Document(PageSize.A4);
   PdfWriter.GetInstance(doc1, new FileStream(path + "/" + pdf_name + "", FileMode.Create));
            doc1.Open();

  var table1 = new PdfPTable(1); //table1
           table1.HorizontalAlignment = Element.ALIGN_LEFT;
           table1.SpacingBefore = 50;
           table1.DefaultCell.Border = 1;
           table1.WidthPercentage = 40;
            PdfPCell cell = new PdfPCell(new Phrase(student_name, boldTableFont));
           // cell.Border = 1;
           // cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
              cell.HorizontalAlignment = Element.ALIGN_CENTER;
            table1.AddCell(cell);
            doc1.Add(table1);


           var table2= new PdfPTable(1); //table2

           table2.DefaultCell.Border = 1;
           table2.HorizontalAlignment = 2;

           table2.SpacingBefore = 50;
           table2.WidthPercentage = 40;

              PdfPCell cell21 = new PdfPCell(new Phrase("success", body));
             cell21.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
             table2.AddCell(cell21);
           doc1.Add(table2);
           doc1.Close();

但第二个表格不在 table1 的右侧,间距为 50。请帮我找出问题

【问题讨论】:

    标签: c# asp.net pdf-generation itextsharp


    【解决方案1】:

    您可能需要考虑更新布局以使用列(有关详细信息,请参阅此处):

    http://www.mikesdotnetting.com/Article/89/iTextSharp-Page-Layout-with-Columns

    如果不详细了解您的布局,很难说哪种基于列的布局最好。

    或者,您也可以完全定位您的表格并以这种方式编写它们。


    作为第三种选择(非常类似于旧的 html 页面),您可以像这样嵌套表格:

    PdfPTable outer = new PdfPTable(2);
    
    outer.AddCell(table1);
    
    outer.AddCell(table2);
    
    document.Add(outer);
    

    【讨论】:

    • 对不起,我没有从那个链接得到解决方案
    【解决方案2】:

    Paddy 的回答对我帮助很大。

    首先,我按照我想要的方式创建了 2 个表。

    然后我使用了 Paddy 的第三个示例,我的代码如下所示:

    // Tabela para os trajetos de ida
        var tablePercursosIda = new Table(UnitValue.CreatePercentArray(1)).UseAllAvailableWidth();
    
        foreach (var item in Content.itinerarios)
        {
            foreach (var percurso in item.percursos.ida)
            {
                tablePercursosIda.AddCell(new Cell()
                    .Add(new Paragraph(
                        new Text(percurso.logradouroNome)
                        )
                        .SetTextAlignment(TextAlignment.CENTER)
                        .SetBold()
                    )
                ).SetFontSize(10);
            }
        }
    
        // Tabela para os trajetos de volta
        var tablePercursosVolta = new Table(UnitValue.CreatePercentArray(1)).UseAllAvailableWidth();
    
        foreach (var item in Content.itinerarios)
        {
            foreach (var percurso in item.percursos.volta)
            {
                tablePercursosVolta.AddCell(new Cell()
                    .Add(new Paragraph(
                        new Text(percurso.logradouroNome)
                        )
                        .SetTextAlignment(TextAlignment.CENTER)
                        .SetBold()
                    )
                ).SetFontSize(10);
            }
        }
    
        // Tabela aninhada
    
        var tableAninhada = new Table(UnitValue.CreatePercentArray(2)).UseAllAvailableWidth();
    
        tableAninhada.AddCell(tablePercursosIda);
        tableAninhada.AddCell(tablePercursosVolta);
    
        table.SetHorizontalAlignment(HorizontalAlignment.CENTER);
    
        Report.Document.Add(table);
        Report.Document.Add(tableAninhada);
    

    下面的结果,我需要改进布局,但这是我需要的

    Result

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多