Example #1
0
        public void DoPrint <T>(T model, PrintTemplate tpl)
        {
            Application.Current.Dispatcher.Invoke(new Action(() =>
            {
                var doc = PrintLayoutHelper.GetDocument();
                doc.Format <T>(tpl, model);

                var q  = GetPrinter("Microsoft XPS Document Writer");
                var pd = new PrintDialog {
                    PrintQueue = q
                };
                if (q != null || pd.ShowDialog().GetValueOrDefault(false))
                {
                    //doc.Background = Brushes.Transparent;
                    doc.PageHeight  = pd.PrintableAreaHeight;
                    doc.PageWidth   = pd.PrintableAreaWidth;
                    doc.PagePadding = new Thickness(25);
                    // doc.ColumnGap = 0;
                    //doc.ColumnWidth = (doc.PageWidth -
                    //                       doc.ColumnGap -
                    //                       doc.PagePadding.Left -
                    //                       doc.PagePadding.Right);
                    pd.PrintDocument(((IDocumentPaginatorSource)doc).DocumentPaginator, "");
                }
            }));
        }
Example #2
0
        public static void Format <T>(this FlowDocument doc, PrintTemplate tpl, T model)
        {
            var temptpl     = tpl.GetCollections(model, GetModelDatas, GetCollections);
            var lines       = tpl.GetNatureDatas(GetModelDatas, model, temptpl).Select(o => tpl.GetLineTagInfos(o));
            var ContentTags = new string[] { "BMP", "T" };

            foreach (var tags in lines)
            {
                Paragraph block = new Paragraph();
                block.LineHeight = 0.0034;
                block.Margin     = new Thickness(0);
                foreach (var tag in tags)
                {
                    if (TagFormat(block, tag, tags))
                    {
                        break;
                    }
                }
                if (tags.Count() > 0)
                {
                    doc.Blocks.Add(block);
                }
            }
        }