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を更新するように指示することはできますか。
明白な解決策は、PdfDocument.SetVerticalPositionが存在する場合にのみ使用することでした:-)
それとも、DirectContentを使用するという概念全体を誤解していますか?
ドキュメントの現在のY位置を更新できない場合、または自動的に更新されない場合、DirectContentにコンテンツを追加した後、PdfDocument.Addを使用できないようです。