public void Print()
{
var doc = new MigraDoc.DocumentObjectModel.Document();
var s = doc.AddSection();
s.PageSetup.Orientation = MigraDoc.DocumentObjectModel.Orientation.Landscape;
s.PageSetup.PageFormat = MigraDoc.DocumentObjectModel.PageFormat.A4;
s.PageSetup.TopMargin = "2cm";
s.PageSetup.BottomMargin = "2cm";
s.PageSetup.LeftMargin = "2cm";
s.PageSetup.RightMargin = "3cm";
var tbl = s.AddTable();
tbl.Borders.Visible = true;
// Footer
var p = s.Footers.Primary.AddParagraph();
p.Format.Font.Size = 10;
p.Format.AddTabStop("245mm", MigraDoc.DocumentObjectModel.TabAlignment.Right);
p.AddText(DateTime.Today.ToShortDateString());
p.AddTab();
p.AddPageField();
p.AddText("/");
p.AddNumPagesField();
var cols = DisplayedColumns.Columns
.Where(i => i.Type != ColumnDisplayModel.ColumnType.MethodModel)
.ToList();
// TODO: Calc width more sophisticated
var width = new MigraDoc.DocumentObjectModel.Unit(250.0 * (1.0 / (double)cols.Count), MigraDoc.DocumentObjectModel.UnitType.Millimeter);
// Header
for (int colIdx = 0; colIdx < cols.Count; colIdx++)
{
//var col = cols[colIdx];
tbl.AddColumn(width);
}
var row = tbl.AddRow();
row.HeadingFormat = true;
for (int colIdx = 0; colIdx < cols.Count; colIdx++)
{
var col = cols[colIdx];
p = row.Cells[colIdx].AddParagraph(col.Header ?? string.Empty);
p.Format.Font.Bold = true;
}
// Data
foreach (var obj in Instances)
{
row = tbl.AddRow();
for (int colIdx = 0; colIdx < cols.Count; colIdx++)
{
string val = cols[colIdx].ExtractFormattedValue(obj);
p = row.Cells[colIdx].AddParagraph(val ?? string.Empty);
}
}
var filename = tmpService.Create("Export.pdf");
var pdf = new MigraDoc.Rendering.PdfDocumentRenderer(true, PdfSharp.Pdf.PdfFontEmbedding.None);
pdf.Document = doc;
pdf.RenderDocument();
pdf.Save(filename);
fileOpener.ShellExecute(filename);
}