如何使用itext sharp将两张桌子并排放置

本文关键字:两张 itext 何使用 sharp | 更新日期: 2024-10-23 11:12:02

我必须创建一个包含两个表的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();

但是第二个表不在表1的右侧,其间距before=50。请帮我找出问题

如何使用itext sharp将两张桌子并排放置

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

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);
帕迪说的答案对我帮助很大。

首先,我按照自己想要的方式创建了这两张表。

然后我使用了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);

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

结果