我正在尝试向现有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();
答案 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();
但是文字只是偏离页面的一边。