Как мне установить таблицу с разным количеством столбцов в каждой строке? - PullRequest
0 голосов
/ 18 октября 2019

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

Table

Только для информации:

  • В первой строке будет текст.
  • Во второй строке будет сначала текст, затем картинка.
  • Затем небольшая строка текста.
  • Затем фрагмент текста и картинка рядом с ним.

Каким-то образом мой первый ряд продолжает устанавливать ширину всех ячеек ниже.

Я пытался использовать обычныйячейка и ячейка заголовка, но я продолжаю получать одни и те же результаты.

    private void TestPDF()
    {
        var CustomSize= new Rectangle(241, 142);
        var writer = new PdfWriter("Test " + DateTime.Now.ToString("dd-MM-yyy") + ".pdf");
        var pdf = new PdfDocument(writer);
        var document = new Document(pdf, new PageSize(CustomSize));
        document.SetMargins(0, 0, 0, 0);

        var tableinformatie = new Table(2);
        tableinformatie.SetWidth(241);
        tableinformatie.SetHeight(142);
        tableinformatie.SetPadding(0);
        tableinformatie.AddHeaderCell("test").UseAllAvailableWidth();
        tableinformatie.AddCell("test").SetWidth(241);
        tableinformatie.AddCell("test").SetWidth(100);

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

Пока это мой код, и я попытался поиграть с фиксированным макетом. Установка ширины и высоты каждой отдельной ячейки, но она не работает.

Я должен что-то упустить из виду.

Заранее спасибо.

РЕДАКТИРОВАТЬ:

Я поиграл с мыслью о нескольких столах вместо того, чтобы исправить это за 1 столом. И это сработало для меня:)!

private void StickerInMM()
{
        var Sticker = new Rectangle(241, 142);
        var writer = new PdfWriter("Test " + DateTime.Now.ToString("dd-MM-yyy") + ".pdf");
        var pdf = new PdfDocument(writer);
        var document = new Document(pdf, new PageSize(Sticker));
        document.SetMargins(0, 0, 0, 0);


        ImageData data = ImageDataFactory.Create("c:/Users/Public/Cyaan.jpg");
        Image img = new Image(data);
        img.SetHeight(15);

        ImageData data2 = ImageDataFactory.Create("c:/Users/Public/Tekst.jpg");
        Image img2 = new Image(data2);
        img2.ScaleToFit(100, 100);

        var EANFONT = PdfFontFactory.CreateFont("c:/Users/Public/ean13.ttf", PdfEncodings.IDENTITY_H, true);
        var cellean = new Paragraph(richTextBox2.Text)
            .SetFontSize(38)
            .SetFont(EANFONT);

        var table = new Table(new float[] { 1 });
        table.SetWidth(UnitValue.CreatePercentValue(100));
        table.AddCell("Laser toner cartridge");
        document.Add(table);

        var table2 = new Table(new float[] { 3, 1 });
        table2.SetWidth(UnitValue.CreatePercentValue(100));
        table2.AddCell("Test");
        table2.AddCell(img);
        document.Add(table2);

        var table3 = new Table(new float[] { 1 });
        table3.SetWidth(UnitValue.CreatePercentValue(100));
        table3.AddCell("Test");
        document.Add(table3);

        var table4 = new Table(new float[] { 2, 2 });
        table4.SetWidth(UnitValue.CreatePercentValue(100));
        table4.AddCell(img2);          
        table4.AddCell(cellean);
        document.Add(table4);

        document.Close();
    }

Теперь создается правильная таблица с правильными размерами.

Спасибо Пауло Соареш за идею.

1 Ответ

0 голосов
/ 21 октября 2019
private void StickerInMM()
{
        var Sticker = new Rectangle(241, 142);
        var writer = new PdfWriter("Test " + DateTime.Now.ToString("dd-MM-yyy") + ".pdf");
        var pdf = new PdfDocument(writer);
        var document = new Document(pdf, new PageSize(Sticker));
        document.SetMargins(0, 0, 0, 0);


        ImageData data = ImageDataFactory.Create("c:/Users/Public/Cyaan.jpg");
        Image img = new Image(data);
        img.SetHeight(15);

        ImageData data2 = ImageDataFactory.Create("c:/Users/Public/Tekst.jpg");
        Image img2 = new Image(data2);
        img2.ScaleToFit(100, 100);

        var EANFONT = PdfFontFactory.CreateFont("c:/Users/Public/ean13.ttf", PdfEncodings.IDENTITY_H, true);
        var cellean = new Paragraph(richTextBox2.Text)
            .SetFontSize(38)
            .SetFont(EANFONT);

        var table = new Table(new float[] { 1 });
        table.SetWidth(UnitValue.CreatePercentValue(100));
        table.AddCell("Laser toner cartridge");
        document.Add(table);

        var table2 = new Table(new float[] { 3, 1 });
        table2.SetWidth(UnitValue.CreatePercentValue(100));
        table2.AddCell("Test");
        table2.AddCell(img);
        document.Add(table2);

        var table3 = new Table(new float[] { 1 });
        table3.SetWidth(UnitValue.CreatePercentValue(100));
        table3.AddCell("Test");
        document.Add(table3);

        var table4 = new Table(new float[] { 2, 2 });
        table4.SetWidth(UnitValue.CreatePercentValue(100));
        table4.AddCell(img2);          
        table4.AddCell(cellean);
        document.Add(table4);

        document.Close();
    }

Исправлено с кодом выше: D!

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