WPFFlowDocumentを印刷しようとしています。レイアウトは、次のようにレイアウトされた、1ページあたり4つのドキュメントの形式である必要があります。
Doc1 | Doc2
-------------
Doc3 | Doc4
(申し訳ありませんが、レイアウトを説明するためのより良い方法を思い付くことができませんでした)。
ページを埋める必要があるため、Doc1と2が空白の場合、または1文字か2文字だけの場合でも、Doc3と4と同じサイズで印刷する必要があります。
私が使用しているコードは次のとおりです(長いので、可能な限り短縮しようとしました)。
PrintDialog printDialog = new PrintDialog();
if ((bool)printDialog.ShowDialog().GetValueOrDefault())
{
FlowDocument flowDocument = new FlowDocument();
flowDocument.PageHeight = printDialog.PrintableAreaHeight;
flowDocument.PageWidth = printDialog.PrintableAreaWidth;
flowDocument.PagePadding = new Thickness(25);
flowDocument.ColumnGap = 0;
flowDocument.ColumnWidth = (flowDocument.PageWidth -
flowDocument.ColumnGap -
flowDocument.PagePadding.Left -
flowDocument.PagePadding.Right);
Table myTable = new Table();
myTable.BorderThickness = new Thickness(3);
AddCols(myTable); // Add 2 cols
TableRowGroup rg = new TableRowGroup();
TableRow row = new TableRow();
AddRows(myTable); // Adds 2 rows
TableCell cell = new TableCell(new Paragraph(new Run("Doc1")));
cell.BorderThickness = new Thickness(1);
cell.BorderBrush = Brushes.Black;
// Repeat 4 times
row.Cells.Add(cell);
myTable.RowGroups.Add(rg);
doc.Blocks.Add(myTable);
....
私が抱えている問題は、これは印刷されますが、上記のようにページに合わせようとしないことです。私が試みていることは可能ですか?もしそうなら、どのように?
編集:
ここを見ると、実際に必要なのは段落の高さを計算する方法であり、Paddingプロパティを設定できると思います。残念ながら、このリンクで提案されている解決策は機能しません!