C# и iText7, установите ширину столбца в абсолютных значениях - PullRequest
0 голосов
/ 19 марта 2020

Я должен реализовать в c# с библиотекой iText7 что-то вроде этого:

enter image description here

И я понял это, используя следующий код:

// doc is the document created in the Main function
public static void CreatePdf(Document doc) {
            // Initialize document
            Document document = doc;

            // a float array for columns width
            float[] colwidths = { 1, 3 };

            // creates table with a number of col equals to how many numbers are in float array
            Table table = new Table(UnitValue.CreatePercentArray(colwidths) );
            table.SetWidth(523);

            table.AddCell(new Cell(1,2).Add(new Paragraph("The table title goes here")));

            // creates a cell that is 3rows and 1col large; vertically centers the text
            table.AddCell(new Cell(3, 1).Add(new Paragraph("here goes the Text1"))
                 .SetVerticalAlignment(VerticalAlignment.MIDDLE) );

            // adds 3 rows in the 2nd column
            table.AddCell("row 1");
            table.AddCell("row 2");
            table.AddCell("row 3");

            document.Add(table);
            document.Close();
        }

Таким образом, я решил, что второй столбец имеет ширину в 3 раза больше первого.

Но я хочу сделать это с абсолютными значениями, чтобы я мог добавлять столбцы и строки с большей точностью, То есть я знаю, что общая ширина составляет 523 точки, поэтому я хочу, чтобы первый столбец имел ширину 123 точки, а второй - ширину 400 точек.

  • Как я могу это сделать?
  • Если я поместил первый столбец шириной 100 пунктов, а второй шириной 300 пунктов, оставит ли он пустое пространство справа?

1 Ответ

1 голос
/ 19 марта 2020

Table имеет конструктор, который принимает float[], где вы можете указать ширину столбцов в точках:

Table table = new Table(new float[] { 123, 400 });

Результирующая ширина таблицы будет суммой предоставленных столбцов, если вы явно не зададите width (используя SetWidth), в этом случае размер каждого столбца изменяется пропорционально.

Например, если вы вызвали:

table.SetWidth(1046);

Полученная ширина столбца будет удвоена до 226 точек и 800 очков соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...