Проверьте, покрывает ли текст ячейку - PullRequest
0 голосов
/ 11 сентября 2018

Мне нужно знать, как проверить, покрывает ли его текст внутри ячейки. Если нет, я хочу закрыть остальное пространство точками.

Например, скажем, у меня есть это:

Paragraph p = new Paragraph("Total:").SetFont(FontRegular).SetFontSize(FontSize);
Cell cell = new Cell();
cell.Add(p);

И я говорю, что клетка занимает весь стол, или половину, или что-то еще. Получить ширину ячейки легко. Я просто получаю ширину текущего столбца через таблицу (я не понимаю, почему GetWidth метода ячейки или абзаца возвращает нуль ...). Но как я могу получить ширину, занятую абзацем? Мне нужно знать, чтобы добавить столько точек, сколько необходимо для форматирования.

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

1 Ответ

0 голосов
/ 23 сентября 2018

Если получить ширину ячейки легко, вы можете использовать табуляцию, чтобы заполнить остальную часть строки точками.Вот пример вспомогательного метода:

private Cell createCell(String content, float cellWidth) {
    Cell cell = new Cell();
    if (content != null) {
        Paragraph p = new Paragraph(content);
        p.addTabStops(new TabStop(cellWidth, TabAlignment.RIGHT, new DottedLine()));
        p.add(new Tab());
        cell.add(p);
    }
    return cell;
}

Он добавит табуляцию и необходимую вкладку, чтобы заполнить остальную часть последней строки точками.

Так что, если я использую этот метод, например,следующим образом:

Table table = new Table(new float[]{150, 50})
        .addCell(createCell("cell 1, 1", 150))
        .addCell(createCell("cell 1, 2", 50))
        .addCell(createCell("cell 2, 1", 150))
        .addCell(createCell("cell 2, 2", 50))
        .addCell(createCell("cell 3, 1", 150))
        .addCell(createCell(null, 50));
doc.add(table);

Результат будет выглядеть примерно так:

Tab stops for filling last line with dots

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

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