WPF打印问题

当我选择Microsoft XPS Document Writer作为打印机时,我的输出是完美的但是当我选择我的HP 1020打印机时,打印机输出空白副本...以下是代码....
private void printButton_Click(object sender, RoutedEventArgs e)
    {
        PrintInvoice pi = new PrintInvoice();
        pi.DataContext = this.DataContext;
        PrintDialog printDlg = new System.Windows.Controls.PrintDialog();
        if (printDlg.ShowDialog() == true)
        {
            pi.Margin = new Thickness(30);

            //now print the visual to printer to fit on the one page.
            printDlg.PrintVisual(pi, "First Fit to Page WPF Print");
        }
    }
    
已邀请:
这可能是由许多不同的事情引起的。您可以添加一些步骤,如果正确执行,可能会导致飞行员返回货物和知识。 首先,您应该扩展到打印页面(来自a2zdotnet的代码):
System.Printing.PrintCapabilities capabilities = 
    printDlg.PrintQueue.GetPrintCapabilities(printDlg.PrintTicket);

 //get scale of the print wrt to screen of WPF visual
 double scale = Math.Min(capabilities.PageImageableArea.ExtentWidth / this.ActualWidth, capabilities.PageImageableArea.ExtentHeight /
                this.ActualHeight);

 //Transform the Visual to scale
 this.LayoutTransform = new ScaleTransform(scale, scale);

 //get the size of the printer page
 Size sz = new Size(capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight);

 //update the layout of the visual to the printer page size.
 this.Measure(sz);
 this.Arrange(new Rect(new Point(capabilities.PageImageableArea.OriginWidth, capabilities.PageImageableArea.OriginHeight), sz));

  //now print the visual to printer to fit on the one page.
  printDlg.PrintVisual(this, "Code ganked from http://www.a2zdotnet.com/View.aspx?id=66");
货物崇拜代码在测量和排列步骤中。通常情况下,如果您调用Measure并传入
new Size(Double.MaxValue, Double.MaxValue)
,那就是您需要做的全部事情。 第二个仪式涉及碰撞调度员。
visual.DataContext = foo;
Dispatcher.Invoke((Action)()=>{;}); // bamp
// print here
试试这些,看看它是否有帮助。     
这个
XAML
在某些情况下可以解决问题
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
  <... Name="myPrintElement" />
</ScrollViewer >
    

要回复问题请先登录注册