7

同じセルの同じ行に、最初のテキストを左に揃え、2 つ目のテキストを右に揃えるセルを含むテーブルがあります。

このセルを MigraDoc で再現しようとしましたが、成功しませんでした。左右に配置された2つのテキストのみを追加できますが、同じ行には追加できません。

ここに私のコード:

Cell cellFooter1 = rowFooter.Cells[0];
Paragraph paraphTot = new Paragraph();
paraphTot.Format.Alignment = ParagraphAlignment.Left;
paraphTot.AddText("Left text");
cellFooter1.Add(paraphTot);
Paragraph paraphDetails = new Paragraph();
paraphDetails.Format.Alignment = ParagraphAlignment.Right;
paraphDetails.AddText("Right text");
cellFooter1.Add(paraphDetails);

ここに解決策が示されています( http://forum.pdfsharp.net/viewtopic.php?f=2&t=2373 )が、テーブルで同じことを行うことができません。仕組みがわかりません。

編集:部分的な解決策:

それがどのように機能するかを理解するのに苦労した後、私のコードは部分的に機能しています。右揃えにする唯一の方法は、近似値で TabStop を作成することであるため、部分的です...うまくいきません。

Table table = new Table();
table.Borders.Width = 0.75;
Column myColumn = table.AddColumn(Unit.FromCentimeter(7));
Row myRow = table.AddRow();
Cell myCell = myRow.Cells[0];
Paragraph myParagraph = new Paragraph();
Style myStyle = doc.AddStyle("myStyle", "Normal");
myStyle.ParagraphFormat.Font.Size = 6.5;
myStyle.ParagraphFormat.Font.Bold = true;
myStyle.ParagraphFormat.TabStops.Clear();
myStyle.ParagraphFormat.AddTabStop(Unit.FromMillimeter(67), TabAlignment.Right);
myParagraph.Style = "myStyle";
myParagraph.Format.Alignment = ParagraphAlignment.Left;
myParagraph.AddFormattedText("left", "myStyle");
myParagraph.AddTab();
myParagraph.AddFormattedText("right", "myStyle");
myCell.Add(myParagraph);

それは機能しますが、AddTab 関数の適切な値を見つける方法は? 68to70が動かないので67にしました。

4

3 に答える 3

12

リンクされた投稿に示されているトリックはかなり単純です。左揃えの 1 つの段落のみが必要です。

次に、セルの右端にある右揃えのタブストップが 1 つだけ定義されていることを確認します。

段落に、左揃えにするテキストを追加し、タブストップを追加してから、右揃えにするテキストを追加します。

サンプルコード:

var table = section.AddTable();
table.AddColumn("8cm");
table.AddColumn("8cm");

var row = table.AddRow();
var paragraph = row.Cells[0].AddParagraph("Left text");
paragraph.AddTab();
paragraph.AddText("Right text");
paragraph.Format.ClearAll();
// TabStop at column width minus inner margins and borders:
paragraph.Format.AddTabStop("7.7cm", TabAlignment.Right);
row.Cells[1].AddParagraph("Second column");
table.Borders.Width = 1;
于 2013-05-27T14:59:04.150 に答える