iTextSharp абсолютное позиционирование (GridView) - PullRequest
2 голосов
/ 30 сентября 2010

У меня проблемы с перекрытием таблиц с использованием iTextSharp.

У меня есть несколько таблиц (из сетки), которые я хотел бы написать в pdf с помощью iTextSharp.

Я бы хотел, чтобы между каждой таблицей был промежуток в 10 пикселей (по вертикали), а высота таблиц всегда различалась.

У кого-нибудь есть статья, которую я могу прочитать, чтобы помочь мне с этим сценарием? Или какой-нибудь совет? Абсолютное позиционирование не работает для меня.

1 Ответ

6 голосов
/ 30 сентября 2010

Вы можете поместить каждую из своих таблиц в iTextSharp.text.Paragraph и использовать свойство SpacingAfter объекта Paragraph для создания своего разрыва.

Как этот метод тестирования:

private static void DemoTableSpacing() {
    using (FileStream fs = new FileStream("SpacingTest.pdf", FileMode.Create)) {

        Document doc = new Document();
        PdfWriter.GetInstance(doc, fs);
        doc.Open();

        Paragraph paragraphTable1 = new Paragraph();
        paragraphTable1.SpacingAfter = 15f;

        PdfPTable table = new PdfPTable(3);
        PdfPCell cell = new PdfPCell(new Phrase("This is table 1"));
        cell.Colspan = 3;
        cell.HorizontalAlignment = 1;
        table.AddCell(cell);
        table.AddCell("Col 1 Row 1");
        table.AddCell("Col 2 Row 1");
        table.AddCell("Col 3 Row 1");
        //table.AddCell("Col 1 Row 2");
        //table.AddCell("Col 2 Row 2");
        //table.AddCell("Col 3 Row 2");
        paragraphTable1.Add(table);
        doc.Add(paragraphTable1);

        Paragraph paragraphTable2 = new Paragraph();
        paragraphTable2.SpacingAfter = 10f;

        table = new PdfPTable(3);
        cell = new PdfPCell(new Phrase("This is table 2"));
        cell.Colspan = 3;
        cell.HorizontalAlignment = 1;
        table.AddCell(cell);
        table.AddCell("Col 1 Row 1");
        table.AddCell("Col 2 Row 1");
        table.AddCell("Col 3 Row 1");
        table.AddCell("Col 1 Row 2");
        table.AddCell("Col 2 Row 2");
        table.AddCell("Col 3 Row 2");
        paragraphTable2.Add(table);
        doc.Add(paragraphTable2);
        doc.Close();
    }
}

Это должно показать, что вы можете сделать.Попробуйте добавить и удалить строки в этой первой таблице;вы увидите, что пространство между двумя таблицами всегда есть и не меняется.

...