在wpf控件打印时设置打印文档的边距

时间:2015-11-02 14:44:59

标签: c# wpf printing

我正在尝试使用以下代码

在wpf中打印树视图控件
PrintDialog printDlg = new PrintDialog();
printDlg.PrintVisual(trv, "GTree Printing.");

树视图正在打印,但它打印到右侧,一些数据正在切断。在这种情况下如何设置保证金?它也不会打印整个树形结构,只有可见部分正在打印。请就此提出建议。

这是在桌面应用程序中

谢谢, Sivajith

1 个答案:

答案 0 :(得分:0)

    public static void Print(IEnumerable<UIElement> dataForPrint, string printerName)
    {
        try
        {
            var printDialog = new PrintDialog();
            using (var printQueue = new PrintQueue(new PrintServer(), printerName))
            {
                printDialog.PrintQueue = printQueue;
                var area = printDialog.PrintQueue.GetPrintCapabilities();
                if (area.PageImageableArea == null) throw new Exception("Failed to load printer settings.");
                var flowDocument = new FlowDocument
                {
                    PagePadding = new Thickness(area.PageImageableArea.OriginWidth, 0, 0, 0),
                    PageWidth = area.PageImageableArea.ExtentWidth + area.PageImageableArea.OriginWidth
                };

                foreach (var uiElement in dataForPrint)
                {
                    flowDocument.Blocks.Add(new BlockUIContainer(uiElement));
                }

                var paginator = ((IDocumentPaginatorSource) flowDocument).DocumentPaginator;
                printDialog.PrintDocument(paginator, "A Flow Document");
            }
        }
        catch (NotSupportedException)
        {

        }
        catch (Exception e)
        {
            Log(e);
        }
    }

如果您显示打印机对话框,则无法创建PrintQueue。只需访问PrintDialog.PrintQueue属性