1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dromara-x-easypdf

 / Детали:

Проблемы использования компонента таблицы вместе с контейнерным компонентом

Предстоит сделать
Владелец
Создано  
03.03.2025

Используемая версия:

org.dromara.x-easypdf
x-easypdf
3.2.1
  1. В компоненте Container1 содержится один Textarea-компонент и ещё один Container-компонент. Container1 будет помещён в таблицу, высота Container1 должна совпадать с номером строки в TableRow, но фактический результат — Container1 выходит за границы высоты TableRow.
  2. Проблема позиционирования: при помещении Textarea-компонента и Container-компонента в Container1 невозможно установить способ расположения этих двух компонентов внутри Container1.

Код:


import org.dromara.pdf.pdfbox.core.base.Document;
import org.dromara.pdf.pdfbox.core.base.Page;
import org.dromara.pdf.pdfbox.core.component.*;
import org.dromara.pdf.pdfbox.core.component.Container;
import org.dromara.pdf.pdfbox.core.enums.VerticalAlignment;
import org.dromara.pdf.pdfbox.handler.PdfHandler;

import java.awt.*;

public class Test3 {

    public static void main(String[] args) {
        // Создание документа
        Document document = PdfHandler.getDocumentHandler().create();
        document.setMargin(20F);
        // Создание страницы
        Page page = new Page(document);

        // Определение ширины столбцов
        float width = document.getCurrentPage().getWithoutMarginWidth() / 4;
        // Определение высоты строк
        float height = 20F;

        // Создание таблицы
        Table table = new Table(document.getCurrentPage());
        // Установка ширин столбцов (четыре столбца)
        table.setCellWidths(width, width, width, width);
        table.setIsBorder(true);
        table.addPagingEvent(new DefaultTablePagingEvent());

        // Добавление строк
        for (int i = 0; i < 10; i++) {
            // Создание строки
            TableRow tableRow = new TableRow(table);
            // Установка высоты строки
            tableRow.setHeight(height);
            // Объединение колонок в третьей строке
            if (i == 2) {
                // Создание поля для текста
                Textarea textarea = new Textarea(table.getPage());
                // Установка текста
                textarea.setText("Строка " + i + ", объединенные колонки");
                // Создание ячейки
                TableCell cell = new TableCell(tableRow);
                // Установка количества объединенных колонок
                cell.setColspan(3);
                // Добавление компонентов
                cell.addComponents(textarea);
                // Добавление ячеек
                tableRow.addCells(cell);
            } else {
                // Добавление колонок
                for (int j = 0; j < 4; j++) {
                    // Объединенная колонка
                    if (i > 3 && i < 6 && j == 0) {
                        // Добавление заполнителя
                        tableRow.addCells((TableCell) null);
                    } else {
                        // Создание поля для текста
                        Textarea textarea = new Textarea(table.getPage());
                        // Установка текста
                        textarea.setText("Строка " + i + ", колонка " + j);
                        // Создание ячейки
                        TableCell cell = new TableCell(tableRow);
                        // Добавление компонентов
                        cell.addComponents(textarea);
                        // Объединение двух строк в четвертой строке первой колонки
                        if (i == 3 && j == 0) {
                            // Установка количества объединенных строк
                            cell.setRowspan(2);
                        }
                        // Добавление ячеек
                        tableRow.addCells(cell);
                    }
                }
            }
            // Добавление строк
            table.addRows(tableRow);
        }

        // Отображение
        table.render();

        Table table1 = new Table(document.getCurrentPage());
        table1.addPagingEvent(new DefaultTablePagingEvent());
        table1.setCellWidths(width, width, width, width);
        table1.setIsBorder(true);

        TableRow tableRow = new TableRow(table1);
        tableRow.setHeight(height);

        Textarea textarea = new Textarea(table1.getPage());
        textarea.setText("Тест");



        TableCell tableCell = new TableCell(tableRow);
        tableCell.addComponents(textarea);
        tableRow.addCells(tableCell, tableCell, tableCell, tableCell);

        TableCell tableCell1 = new TableCell(tableRow);



        TableRow tableRow1 = new TableRow(table1);
        tableRow1.setHeight(30f);

        Container container = new Container(document.getCurrentPage());

        container.setWidth(document.getCurrentPage().getWithoutMarginWidth() - 100);
        container.setHeight(30f);
        container.setBackgroundColor(Color.CYAN);
        container.setVerticalAlignment(VerticalAlignment.CENTER);
        container.setContentVerticalAlignment(VerticalAlignment.CENTER);

        Container container1 = new Container(document.getCurrentPage());
        container1.setHeight(30f);
        container1.setWidth(20f);
        container1.setBackgroundColor(Color.ORANGE);
        container1.setVerticalAlignment(VerticalAlignment.CENTER);
        container1.setContentVerticalAlignment(VerticalAlignment.CENTER);

        Textarea textarea1 = new Textarea(document.getCurrentPage());
        textarea1.setText("Устранение теста");
        textarea1.setVerticalAlignment(VerticalAlignment.CENTER);

        container.addComponents(textarea1, container1);

        tableCell1.addComponents(container);
        tableCell1.setContentVerticalAlignment(VerticalAlignment.CENTER);
        tableCell1.setColspan(3);
        tableCell1.setBackgroundColor(Color.BLUE);

        tableRow1.addCells(tableCell1, (TableCell) null, (TableCell) null, (TableCell) null);

        table1.addRows(tableRow, tableRow1);
        table1.render();

        // Добавление страницы
        document.appendPage(page);
        // Сохранение документа
        document.save("D:\\Work\\xhecker\\GenReportPDFBox\\src\\test\\test3.pdf");
        // Закрытие документа
        document.close();



    }
}

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/dromara-x-easypdf.git
git@api.gitlife.ru:oschina-mirror/dromara-x-easypdf.git
oschina-mirror
dromara-x-easypdf
dromara-x-easypdf