簡體   English   中英

PdfPCell中的水平文本對齊

[英]Horizontal text alignment in a PdfPCell

我正在使用此代碼水平對齊。

cell = New PdfPCell();
p = New Phrase("value");
cell.AddElement(p);
cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER; //Tried with Element.Align_Center Also. Tried Adding this line before adding element also. 
table.AddCell(cell);

它不起作用。

我正在創建一個包含5列的表,並在運行時使用上面的代碼在for循環中動態添加單元格。 我希望所有單元格內容都居中。

試試這個,

cell = New PdfPCell();
p = New Phrase("value");
cell.AddElement(p);
cell.HorizontalAlignment = Element.ALIGN_CENTER; //Tried with Element.Align_Center Also. Tried Adding this line before adding element also. 
table.AddCell(cell);

試試這個,

cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right

我嘗試了所有上述解決方案,但都沒有效果。 然后我嘗試了這個,這使我找到了正確的解決方案

PdfPCell c2 = new PdfPCell(new iTextSharp.text.Phrase("Text")) { HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER };
table.AddCell(c2);

我知道OP不需要它,但如果用\\ n分隔,你也可以將幾個單詞居中。 此外,您還可以使用Element.ALIGN_MIDDLE垂直居中

所有這些代碼是:

PdfPCell c2 = new PdfPCell(new iTextSharp.text.Phrase("AAAAAAAAA\nBBBBBB")) { HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER, VerticalAlignment = iTextSharp.text.Element.ALIGN_MIDDLE };
table.AddCell(c2);

結果:

在此輸入圖像描述

希望能幫助到你

根據評論,正確答案(我剛剛在本地測試)是創建一個段落元素並將對齊指令添加到段落中。

一個代碼的工作塊表明了這一點:

        Font qFont = FontFactory.GetFont(FontFactory.HELVETICA_BOLDOBLIQUE, 10);
        List<float> widths = new List<float>();
        for(int i = 0; i < qs.Selected.Items.Count; i++) {
            widths.Add((pageRectangle.Width - 250)/ qs.Selected.Items.Count);
        }

        PdfPTable table = new PdfPTable(qs.Selected.Items.Count);
        table.HorizontalAlignment = Element.ALIGN_CENTER;
        table.SetTotalWidth(widths.ToArray());

        foreach(System.Web.UI.WebControls.ListItem answer in qs.Selected.Items) {
            cell = new PdfPCell();
            cell.Border = Rectangle.NO_BORDER;
/******************** RELEVANT CODE STARTS HERE ***************************/
            Paragraph p = new Paragraph(answer.Text, aFont);
            p.Alignment = Element.ALIGN_CENTER;
            cell.AddElement(p);
            table.AddCell(cell);
/******************** RELEVANT CODE  ENDS  HERE ***************************/
        }

對此應該歸功於用戶Bruno Lowagie,但似乎有一些奇怪的戲劇正在發生,對正確答案的暗示投票和隨后刪除相同的投訴。

如果在合適的時間在正確的地方找到明確的答案,我會吃掉它們。

有些事情比互聯網點更重要。 <3

我知道這是一個老問題,但適當的解決方法是使用cell.HorizontalAlignment = 1;

這是一個很好的例子

例如,可以為所有表格單元格設置對齊:

table.DefaultCell.HorizontalAlignment = Element.ALIGN_JUSTIFIED;

如果您需要為某些表格單元格進行其他對齊,則可以單獨指定它 -

Phrase phraseConstant = new Phrase("Name :", font);
PdfPCell cell = new PdfPCell(phraseConstant);
cell.HorizontalAlignment = 0;
table.AddCell(phraseConstant);

最后

改變這個:

 cell = New PdfPCell();
 p = New Phrase("value");
 cell.AddElement(p);
 cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER; 
 table.AddCell(cell);

有了這個 :

PdfPCell cell = new PdfPCell(new Phrase("value"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;

看起來相似但結果不同我不知道為什么

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM