我使用 ITextSharp 生成 PDF,并且遇到需要通过 ColumnText 使用 DirectContent 的情况。
问题是,通过 ColumnText 对象写入文本后, PdfDocument.GetVerticalPosition 没有更新?请参阅以下失败的测试:
public void TestGetVerticalPositionIsUpdated()
{
PdfContentByte cb = Writer.DirectContent;
var columnText = new ColumnText(cb);
float position1 = Writer.GetVerticalPosition(true);
columnText.SetSimpleColumn(Document.Left,
Document.Bottom,
Document.Right,
position1,
0,
Element.ALIGN_JUSTIFIED);
columnText.AddText(new Phrase("Test test test test test\nTest test test test test"));
columnText.Go();
float position2 = Writer.GetVerticalPosition(true);
Assert.AreEqual(position1, position2);
}
无论如何要告诉作者或文档更新文档currentHeight。
obvoius 解决方案是使用 PdfDocument.SetVerticalPosition 如果它只存在:-)
还是我误解了使用 DirectContent 的整个概念?
在我看来,如果文档上的当前 Y 位置无法更新或未自动更新,则在将内容添加到 DirectContent 后,您将无法使用 PdfDocument.Add。