Печать ленты с помощью PrintDialog

#c# #wpf #printdialog

#c# #wpf #printdialog

Вопрос:

это сводит меня с ума. Я стараюсь печатать бесшумно на ленте (высота 1000 мм, ширина 150 мм). Содержимое представляет собой холст, содержащий форматированный текст.

Если я использую «Microsoft Print To PDF», это работает и выглядит нормально. Когда я продолжаю и использую принтер OKI из pdf, все в порядке!

Если я напрямую попытаюсь выполнить печать с использованием 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();
    }
  

Комментарии:

1. решением могло бы быть внедрение результата в программу просмотра PDF и оттуда для печати. Разве это не исправило бы это? У меня была похожая проблема при использовании другого языка. Моя проблема была с термопринтером, и это исправило ее для меня. «Реальная» проблема может заключаться в том, что принтер нестандартный и, следовательно, относится к нестандартным размерам, которые ваша программа не может понять.

2. звучит как план. Я попробую это, спасибо