web-dev-qa-db-ja.com

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ループで実行時にセルを動的に追加しています。すべてのセルのコンテンツを中央に配置したい。

8
yogesh420

上記のすべての解決策を試しましたが、どれもうまくいきませんでした。それから私はこれを試しました、そしてそれは私を正しい解決策に導きました

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);

そして結果:

enter image description here

それが役に立てば幸い

6
Patrick

これを試して、

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);
6
Manish Sharma

これを試して、

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

コメントによると、正解(ローカルでテストしたばかりです)は、段落要素を作成し、段落に配置ディレクティブを追加することです。

これを示すコードの作業ブロックは次のとおりです。

        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 ***************************/
        }

これの功績はユーザーのBrunoLowagieにあるはずですが、いくつかの奇妙なドラマが起こっているようで、正解に対する反対票の苦情とその後の同じものの削除があります。

適切な場所に適切なタイミングで明確な回答が投稿されたら、反対票を食べます。

インターネットポイントよりも重要なことがいくつかあります。 <3

4
Alex C

これは古い質問ですが、適切な解決策はcell.HorizontalAlignment = 1;を使用することです。

ここにニースがあります

2
david

例として、すべてのテーブルセルの配置を設定することができます。

table.DefaultCell.HorizontalAlignment = Element.ALIGN_JUSTIFIED;

一部のテーブルセルに他の配置が必要な場合は、個別に指定できます-

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

最後に

これを変える :

 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;

似ているように見えますが、結果が異なります理由はわかりません

0