#java #reporting #itext
#java #отчетность #itext
Вопрос:
Каков рекомендуемый способ печати текстового документа в формате PDF с использованием абсолютного позиционирования? У меня есть таблица, которую я должен распечатать. У меня также есть длины типов данных и начальные позиции столбцов. Поскольку существующая таблица была символьной, проблем с ее позиционированием не было. Но даже после использования монотипного шрифта (Courier, 10) я не могу правильно расположить данные, и последние столбцы каждой строки ошибочно переходят к следующей строке.
Чтобы представить мои данные как можно ближе к символьным, я разделил страницу на разные столбцы (в зависимости от размера страницы), а затем добавил содержимое в нужное место. Я добавляю фрагменты данных в абзац.
paragraph.add(new Chunk(new VerticalPositionMark(), columnNo*ptUnit, false));
Я попытался настроить размер страницы, размер шрифта и длину полей, но данные отображаются неправильно. Сталкивались ли вы с какими-либо подобными проблемами? пожалуйста, поделитесь своими мыслями.
Ответ №1:
Вы пробовали ColumnText
Когда я хочу написать абзац, и я знаю количество строк…Я увеличиваю цикл (даже если он говорит об увеличении и является минусом, потому что pdf-файл находится с «юга» на «север» (0 — высота) y в пропорции к размеру шрифта, что-то вроде этого
//_valueArray is my string[]
//fontSize is the value of the Size of the font...
//1.5 it's just a magic number :) that give me the space line that i need
//cbLocal is the PdfContentByte of the pdf
for (i = 0; i < _valueArray.Length; i )
{
var p = new Phrase(_valueArray[i], font);
ColumnText.ShowTextAligned(cbLocal, align, p, x, y, 0);
if (i 1 != _valueArray.Length)
{
y = y - (fontSize*1.5f);
}
}