Как заставить работать ширину PdfpTable?

Итак, я пытался выяснить, как заставить работать ширину таблицы, но безуспешно для конкретного случая.

У меня есть таблица с 2 столбцами. Во втором столбце я добавляю одну ячейку, содержащую таблицу с одним столбцом. В эту ячейку я добавляю таблицу с одним столбцом, затем добавляю ячейку с текстом, а затем еще один PdfPTable с двумя столбцами.

Теперь этот последний PdfPTable я, кажется, не могу манипулировать. SetTotalWidth и WidthPercentage ничего не делают, вообще ничего не меняются. Я просто хочу сделать эту таблицу менее широкой.

Я делаю что-то не так или у itextcharp есть ошибки?


person Johan    schedule 28.10.2011    source источник


Ответы (1)


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

Я установил ширину для самой внешней и самой внутренней таблицы, и у меня все работает отлично. Внешняя таблица выдувается из-за внутренних таблиц, но этого и следовало ожидать.

        string sampleFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Sample.pdf");
        using (FileStream fs = new FileStream(sampleFile, FileMode.Create, FileAccess.Write, FileShare.None))
        {
            using (Document doc = new Document(PageSize.LETTER))
            {
                using (PdfWriter w = PdfWriter.GetInstance(doc, fs))
                {
                    doc.Open();

                    PdfPTable t1 = new PdfPTable(2);
                    PdfPTable t2 = new PdfPTable(1);
                    PdfPTable t3 = new PdfPTable(1);
                    PdfPTable t4 = new PdfPTable(2);

                    t1.SetTotalWidth(new float[] { 10f, 40f });
                    t4.SetTotalWidth(new float[] { 40f, 10f });

                    t4.AddCell("t4a");
                    t4.AddCell("t4b");
                    t3.AddCell(t4);
                    t2.AddCell(t3);
                    t1.AddCell("t1a");
                    t1.AddCell(t2);

                    doc.Add(t1);

                    doc.Close();
                }
            }
        }
person Chris Haas    schedule 28.10.2011
comment
Почти последнюю таблицу я сначала помещаю в ячейку, а потом добавляю. И я не получаю таблицу, чтобы изменить ее ширину. - person Johan; 31.10.2011
comment
Сначала я добавляю ячейку с обычно большим количеством текста в t3, затем идет таблица table t4, которую я по какой-то причине сначала добавляю в ячейку, которую я теперь изменил, чтобы добавить непосредственно в t4 после текста. Однако это не заставило itextsharp применять команды ширины. - person Johan; 31.10.2011
comment
Было бы действительно полезно, если бы вы опубликовали пример кода, сделайте его как можно более простым, потому что вложение чего-либо несколько раз может добавить много сложности. - person Chris Haas; 31.10.2011