ITextSharp,定位文本

时间:2011-10-20 10:17:12

标签: c# pdf itextsharp

我们正在使用ITextSharp,原因是我不明白,我们还没有这本书,而且我有一个烦人的问题,我很感激帮助。

我正在使用页脚,我无法按照我的意愿对齐它。

我所拥有的函数采用了一个字符串列表,但它通常是每行所需的4个字符串。它不像itextsharp那样可以处理带有换行符的字符串,所以这就是列表的原因。

现在这对我来说没有正确定位,第一个字符串看起来没问题,但是第二个字符串有点长,它在文档外面的一半就像第三个字符串一样,即使你有1个,第四个字符串也不可见剩下几厘米的空间。

感谢您的帮助!

public PdfTemplate AddPageText(IList<string> stringList, PdfWriter writer) 
{
    var cb = writer.DirectContent;
    PdfTemplate footerTemplate = cb.CreateTemplate(450, 120); //55);

    footerTemplate.BeginText();
    BaseFont bf2 = BaseFont.CreateFont(BaseFont.TIMES_ITALIC, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
    footerTemplate.SetFontAndSize(bf2, 9);
    footerTemplate.SetColorStroke(BaseColor.DARK_GRAY);
    footerTemplate.SetColorFill(BaseColor.GRAY);

    footerTemplate.SetLineWidth(3);
    footerTemplate.LineTo(50, footerTemplate.YTLM);

    int y = 10;
    foreach (string text in stringList)
    {
        float widthoftext = 500.0f - bf2.GetWidthPoint(text, 9);
        footerTemplate.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, text, widthoftext, 50 - y, 0);
        y += y;
    }
    footerTemplate.EndText();

    return footerTemplate;

}

1 个答案:

答案 0 :(得分:1)

如果您正在进行字符串放置并使用DirectContent,那么您负责内容。在这种情况下,您需要计算字符串矩形并相应地换行。

但是,我会建议使用带有单元格的表格来处理文本。表格包装文本并处理您正在处理的一些问题。