web-dev-qa-db-ja.com

PdfPCellのiTextSharp複数行を次々に

ITextSharpを使用してPDFドキュメントにテーブルを作成しています。テーブルセル内に次のように上下に表示するには、いくつかの行が必要です。

First line text
   Second Line Text
   Third Line Text
Fourth line text

このような余分な行がある場合があります:

First line text

   Second Line Text
   Third Line Text
Fourth line text

段落、チャンク、フレーズを使っていくつかのアプローチを試しましたが、オンラインで調査しましたが、それでもこの結果を得ることができません。助けてください。また、コンテンツに合わせて幅を動的に調整する列を作成するにはどうすればよいですか? (ラッピングではありません)ありがとう

7
Karen Slon

テキストレベルで整列する必要がある場合は、固定幅フォントに切り替える必要があります。ただし、インデントするだけの場合は、段落内の新しい行にスペースを追加するだけです。

var p = new Paragraph();
p.Add("First line text\n");
p.Add("    Second line text\n");
p.Add("    Third line text\n");
p.Add("Fourth line text\n");
myTable.AddCell(p);

さらに制御が必要な場合は、複雑になってサブテーブルを使用することもできます。

var subTable = new PdfPTable(new float[] { 10, 100 });                        
subTable.AddCell(new PdfPCell(new Phrase("First line text")) { Colspan = 2, Border = 0 });
subTable.AddCell(new PdfPCell() { Border = 0 });
subTable.AddCell(new PdfPCell(new Phrase("Second line text")) {  Border = 0 });
subTable.AddCell(new PdfPCell() { Border = 0 });
subTable.AddCell(new PdfPCell(new Phrase("Third line text")) { Border = 0 });
subTable.AddCell(new PdfPCell(new Phrase("Fourth line text")) { Colspan = 2, Border = 0 });
myTable.AddCell(subTable);
16
Chris Haas

かなり面倒ですが、フォントの設定については、次のように機能します。

Font myFont = FontFactory.GetFont("Arial", 8, Font.NORMAL);

string line1 = "First line of text" + "\n";                     
string line2= "Second line of text" + "\n";
string line3= "   Third Line of text";

Paragraph p1 = new Paragraph();
Phrase ph1 = new Phrase(line1, myFont);
Phrase ph2 = new Phrase(line2, myFont);
Phrase ph3 = new Phrase(line3, myFont);

p1.Add(ph1);
p1.Add(ph2);
p1.Add(ph3);

PdfPCell mycell = new PdfPCell(p1);
6
Karen Slon

次の方法でも実行できます。

var xstring = "Your first line \n Your 2nd line";
Phrase p = new Phrase();
p.Add(new Chunk(xstring, yourFontFace));

テキストは改行の戻りコードに気づき、フレーズを2つの別々の行にレンダリングします。

あなたの最初の行

あなたの2行目

乾杯

1
bigamil