birwin的答案不起作用。 ColumnText alignment只接受水平對齊。這是一直工作到ColumnText文本處於文本模式。當您撥打ColumnText.AddElementColumnText切換到CompositMode並且對齊無效。
如果你真的想垂直排列在ColumnText那麼你必須創建已對齊的內容,並且必須添加到ColumnText內容。只有表和單元垂直對齊有效的正確對象。
所以首先我們必須創建一個表格,一列一格。並將單元格的大小設置爲與列文本大小相同。 第二,這個表必須添加到ColumntText
這裏是我的代碼:
// create doc
var pdfDoc = new Document(PageSize.A4);
var pdfWriter = PdfWriter.GetInstance(pdfDoc, new FileStream(Path.Combine(Path.GetTempPath(), "test.pdf"), FileMode.Create));
pdfDoc.Open();
var canvas = pdfWriter.DirectContent;
canvas.SaveState();
canvas.Rectangle(100, 100, 100, 100);
canvas.SetRgbColorFill(255, 128, 128);
canvas.Fill();
canvas.RestoreState();
// create font
BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
Font times = new Font(bfTimes, (float)10, Font.ITALIC, new BaseColor((int)232434));
Phrase myText = new Phrase(new Chunk("Hello World", times));
ColumnText ct = new ColumnText(canvas);
/* wrong birwin code :
ct.SetSimpleColumn(myText, 100, 100, 200, 200, ct.Leading, Element.ALIGN_BOTTOM);
*/
// new working code: crreate a table
PdfPTable table = new PdfPTable(1);
table.SetWidths(new[] { 1 });
table.WidthPercentage = 100;
table.AddCell(new PdfPCell(myText)
{
HorizontalAlignment = Element.ALIGN_RIGHT,
VerticalAlignment = Element.ALIGN_BOTTOM,
FixedHeight = 100
});
ct.SetSimpleColumn(100, 100, 200, 200);
ct.AddElement(table);
ct.Go();
pdfDoc.Close();
了'ColumnText'充滿自上而下的。但是,您可以執行的操作是首先在仿真模式下填充「ColumnText」,讀取填充區域的高度,然後填充「ColumnText」,並相應地向下移動矩形。 – mkl