2013-03-01 87 views
1

我想使用iTextSharp居中多行文本塊。我認爲使用ColumnText可以做到這一點,但我在同時進行中心對齊以及正確包裝工作時遇到了一些麻煩。使用iTextSharp居中的多行文本ColumnText

下面是一些代碼,顯示了2種方法我想:

private void PrintLocationAddress(PdfContentByte Canvas, string Address) 
{ 
    //define the regions for our ColumnText objects 
    Rectangle rect1 = new Rectangle(150f, 300, 350f, 450f); 
    Rectangle rect2 = new Rectangle(150f, 50f, 350f, 200f); 

    //outline the rectangles so we can visualize placement of the ColumnText 
    Canvas.Rectangle(rect1.Left, rect1.Bottom, rect1.Width, rect1.Height); 
    Canvas.Rectangle(rect2.Left, rect2.Bottom, rect2.Width, rect2.Height); 
    Canvas.SetColorStroke(BaseColor.CYAN); 
    Canvas.Stroke(); 

    //define the text and style 
    Chunk c = new Chunk(Address, new Font(Font.FontFamily.COURIER, 12, Font.NORMAL, BaseColor.MAGENTA)); 
    c.SetTextRenderMode(PdfContentByte.TEXT_RENDER_MODE_FILL, 0, BaseColor.PINK); 
    Phrase LongText = new Phrase(c); 

    //this text is centered, but will wrap onto itself on the same line 
    ColumnText column1 = new ColumnText(Canvas); 
    column1.SetSimpleColumn(LongText, rect1.Left, rect1.Bottom, rect1.Right, rect1.Top, 0, PdfContentByte.ALIGN_CENTER); 
    column1.Go(); 

    //this text will wrap, but how to center it?! 
    ColumnText column2 = new ColumnText(Canvas); 
    column2.SetSimpleColumn(rect2); 
    column2.SetText(LongText); 
    column2.Go(); 
} 

您可以查看上面的代碼的輸出: http://imgur.com/Ty3oD7w

回答

1

我錯過了ColumnText.Alignment屬性:

column2.Alignment = Element.ALIGN_CENTER; 

所以,要使用ColumnText將多行文本居中放置在指定尺寸的框中:

ColumnText column2 = new ColumnText(Canvas); 
column2.SetSimpleColumn(rect2); 
column2.SetText(LongText); 
column2.Alignment = Element.ALIGN_CENTER; 
column2.Go();