2013-02-25 3 views
0

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

PdfPTable cutTable = new PdfPTable(1); 
    cutTable.setTotalWidth(200f); 
    cutTable.setLockedWidth(true); 

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

Как получить таблицу, чтобы скопировать содержимое ячейки на ее границах? Если я не могу этого сделать, как определить высоту ячейки (фраза использует шрифт Arial 8) с текстовой оболочкой по умолчанию, прежде чем она будет добавлена ​​в таблицу?

Заранее за вашу помощь.

ответ

0

Взгляните на пример CellHeights из моей книги «iText in Action». Он использует различные параметры для установки высоты ячейки. Я думаю, вам нужен метод setFixedHeight(). При использовании этого метода все содержимое, добавленное в ячейку, которая не соответствует высоте, будет удалена.

+0

Спасибо, Бруно. У меня есть твоя потрясающая книга и я читаю главу 4 много раз. Я ищу, как определить высоту ячейки с обернутым текстом в ней до вызова table.addCell (cell)? У меня есть таблица, созданная с абсолютной шириной и высотой. У меня есть много строк ячеек для вставки, но хотелось бы вставить до границ прямоугольника таблицы. Установка высоты фиксированной ячейки работает, если все строки имеют фиксированную высоту. Но когда у вас есть обернутый текст внутри ячеек, как вы определяете его высоту, прежде чем добавлять ячейку, чтобы последняя добавленная ячейка не переполняла нижнюю границу таблицы? – Kathy

+0

Я не думаю, что понимаю, что вы пытаетесь сделать, но я знаю, что: 1. вы не можете запросить iText, сколько места занимает ячейка, прежде чем добавлять ее в таблицу, потому что таблица определяет размер клетка. 2. Если вы хотите узнать, сколько места занимает контент, вы можете использовать объект ColumnText для проверки содержимого. Если вы используете PdfTemplate для отображения столбца, вы можете повторно использовать PdfTemplate для создания ячейки. Может быть, это решение, но ... как я уже сказал: я не уверен, понимаю ли я этот вопрос. –

+0

Мне пришлось создавать таблицы с несколькими колонками с разной высотой. Проблема в том, что я обернул текст и когда я вставлял ячейки, они не были привязаны к границам таблицы; поэтому вы можете визуально видеть, как ячейки переполняются/кровоточат по граничному прямоугольнику. Я работал над этой проблемой, отслеживая высоты ячеек после того, как я добавил ячейку. Если общая высота ячейки больше высоты таблицы, я удалил ранее добавленную ячейку и остановил вставку ячеек. Это решение работает, но я пожелал PdfPTable, учитывая размерность и llx, lly, он мог бы обрезать область прямоугольника для меня. Благодарю. – Kathy

Смежные вопросы