将无限的文本区域添加到PDF文档中

时间:2009-07-31 14:52:24

标签: c# itext pdf-generation

我正在尝试向现有PDF模板添加一个文本块。

我希望能够设置左边距和右边距,但文本数量不确定,所以我需要相对于输入文本展开框。

我已经设法将文本区域放在模板上并插入文本,但这样做需要我明确设置文本区域的底线位置。

这是我到目前为止的代码(pdfStamper是预先定义的):

BaseFont bf = BaseFont.CreateFont(BaseFont.COURIER, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
Font font = new Font(bf, 11, Font.NORMAL);
Phrase unicodes = new Phrase(reports.StringText, font);
PdfContentByte over;
over = pdfstamper.GetOverContent(1);
ColumnText ct = new ColumnText(over);
ct.SetSimpleColumn(unicodes, 19, **80**, 575, 335, 10, Element.ALIGN_LEFT);
ct.Go();

1 个答案:

答案 0 :(得分:0)

好的,我已经去了其他解决方案(不起作用)。他们在这里:

PdfPTable table = new PdfPTable(1);
string text = "blab balba b balbala ";
string finalText = "TestTitle1\r\n\r\n";

for (int i = 0; i < 200; ++i)
{
     finalText += text;
}
table.AddCell(finalText);
table.TotalWidth = 300;
table.WriteSelectedRows(0, -1, 20, 325, pdfstamper.GetUnderContent(1));

这样可以将桌子放在所需的位置,并具有所需的宽度。但如果有太多的文字适合那个页面,我希望它延伸到下一页 - 它没有。我已经尝试传递WriteSelectedRows一个可选的画布数组(pdfstamper.GetUnderContent(1)pdfstamper.GetUnderContent(2)),但这只会引发Index was outside the bounds of the array例外 - 但即使这确实有效,我也不会我知道它是否会做我想做的事。

或者就是这个:

PdfContentByte over;
over = pdfstamper.GetOverContent(1);
over.BeginText();
over.SetTextMatrix(20, 300);
over.ShowText(report.AutonomyText);
over.EndText();

但是文字只是偏离页面的一边。