ITextSharp并将富文本放在特定位置

时间:2008-12-16 20:16:33

标签: itextsharp

我使用Adobe LiveCycle创建了一个pdf文档。我面临的问题是我需要在文档的特定位置添加一些格式化文本。

我该怎么做?

    overContent.BeginText();
    overContent.SetTextMatrix(10, 400);
    overContent.ShowText("test");

这只会在指定的位置添加基本文本,我真的需要在文档中使用换行符,项目符号等。

1 个答案:

答案 0 :(得分:2)

我在Java中使用iText并遇到了类似的情况。我只是试图插入一个简单的换行符与非格式化的文本。换行符(\ n)不会飞。我提出的解决方案(并且它很漂亮)是:

// read in the sourcefile
reader = new PdfReader(path + sourcefile);

// create a stamper instance with the result file for output
stamper = new PdfStamper(reader, new FileOutputStream(path + resultfile));

// get under content (page)
cb = stamper.getUnderContent(page);
BaseFont bf = BaseFont.createFont();

// createTemplate returns a PdfTemplate (subclass of PdfContentByte)
// (width, height)
template = cb.createTemplate(500, 350);

Stack linelist = new Stack();
linelist.push("line 1 r");
linelist.push("line 2 r");
linelist.push("line 3 r");
int lineheight = 15;
int top = linelist.size() * lineheight;

for (int i = 0; i < linelist.size(); i++) {
    String line = (String) linelist.get(i);
    template.beginText();
    template.setFontAndSize(bf, 12);
    template.setTextMatrix(0, top - (lineheight * i));
    template.showText(line);
    template.endText();
}

cb.addTemplate(template, posx, (posy-top));
stamper.close();
  1. 我将我的行分成数组/堆栈/列表
  2. 我一次循环列表和setText一行
  3. 有一个更好的方法,但这适用于我的情况(暂时)。