使用ITextSharp生成PDF並且有需要通過ColumnText使用DirectContent的情況。使用ColumnText寫入DirectContent不會更新PdfDocument.GetVerticalPosition
問題是,通過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。