使用itext在绝对位置打印

时间:2011-10-31 11:34:51

标签: java reporting itext

使用绝对定位将文本文档打印为pdf的推荐方法是什么? 我有一张桌子,我必须打印。我也有数据类型长度和列的起始位置。 由于现有表是基于字符的,因此其定位没有问题。但即使在使用单色字体(Courier,10)后,我也无法正确定位数据,每行的最后一列错误地跳到下一行。

为了使我的数据与字符1一样接近,我将页面分成不同的列(基于其页面大小),然后在所需的位置添加内容。我在段落中添加了大量数据。

paragraph.add(new Chunk(new VerticalPositionMark(), columnNo*ptUnit, false));

我尝试调整页面大小,字体大小和边距长度,但数据未正确显示。你遇到过这样的问题吗?请分享你的想法。

1 个答案:

答案 0 :(得分:0)

您是否尝试过ColumnText

当我想写一个段落而且我确实知道行数...我做了一个循环递增(即使它表示递增而且是减号是因为pdf是从“南”到“北”(0 - height)字体大小比例中的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);
    }
}