使用PrintDialog打印功能区

时间:2019-03-13 20:50:25

标签: c# wpf printdialog

让我发疯。我尝试静默打印色带(高度为1000毫米,宽度为150毫米)。内容是包含格式化文本的画布。

如果我使用“ Microsoft Print To PDF”,它可以正常工作,并且看起来不错。当我继续使用pdf的OKI打印机时就可以了!

如果我直接尝试使用OKI进行打印,则会出现空白色带,或者(如果更改某些参数)会在茫茫荒野中得到非常小的文字。

有什么想法吗?不幸的是,几乎不可能进行调试。

这是打印功能:

        private void MenuItem_Click(object sender, RoutedEventArgs e)
    {
        PrintDialog prnt = new PrintDialog();
        //PrintQueue queue = new LocalPrintServer().GetPrintQueue("Microsoft Print To PDF");
        PrintQueue queue = new LocalPrintServer().GetPrintQueue("OKI C3450");

        prnt.PrintQueue = queue;
        //var f = queue.GetPrintCapabilities();
        prnt.PrintTicket = new PrintTicket();
        prnt.PrintTicket.PageMediaSize = new PageMediaSize(3779.53, 566.93);
        prnt.PrintTicket.PageOrientation = PageOrientation.Landscape;
        //if (prnt.ShowDialog() == true)
        //{
            Size pageSize = new Size(3779.53, 566.93);

        var canvasToPrint = this.backgroundCanvasSchleife1;

        this.backgroundCanvasSchleife1.Measure(pageSize);
        this.backgroundCanvasSchleife1.Background = new SolidColorBrush(Colors.Transparent);
        this.backgroundCanvasSchleife1.Children.RemoveRange(0, this.backgroundCanvasSchleife1.Children.Count-1);
        this.backgroundCanvasSchleife1.Arrange(new Rect(0, 0, pageSize.Width, pageSize.Height));

        //if (prnt.ShowDialog() == true)
        //{
       // try
        //{
            prnt.PrintVisual(this.backgroundCanvasSchleife1, "Printing Canvas");
        //}catch (Exception ex)
        //{
        //    var t = ex;
        //}
            //}
        //}
        //this.Close();
    }

0 个答案:

没有答案