WPF打印在1个系统上打印而不在其他系统上打印

时间:2014-04-15 13:02:34

标签: c# wpf printing

我有一个 WPF应用程序,其中有3种打印方式。在两种方式中,我直接使用窗口的视觉效果并使用PrintVisual(myPanel, "Title")进行打印。第三,我打印了多个页面,因此我使用的是FlowDocumentStackPanel,最后是IDocumentPaginatorSource,并打电话给PrintDocument进行打印。

所有代码都在我的系统上完美运行。我可以在OneNoteXPS上执行打印,它可以按预期工作。但同样的应用程序,当我尝试在其他系统上运行时,它显示所有3个打印的空白页。 PrintVisual支持.NET 3.0, 3.5, 4.0, 4.5,因此我无法找到不工作的理由。

我还会分享一些代码,以便更清晰:

    // 1 PRINT 
    public void PrintRegister()
    {
        PrintDialog pd = new PrintDialog();
        if (pd.ShowDialog() == true)
            pd.PrintVisual(this, "Register Window");

        return;
    }

    // 2 PRINT  
    public static void PrintAttendanceOf(System.Data.DataRow r1) {
        PrintLayoutWindowPORT plw = PrintUtility.CreatePrintLayoutWindowPORTObject(r1); // PORTRAIT

        Canvas p1 = PrintUtility.CloneCanvas(plw._PrintCanvas, 5);
        Grid myPanel = new Grid();
        myPanel.Margin = new Thickness(10);
        myPanel.Children.Add(p1);

        PrintDialog pd = new PrintDialog();
        pd.PageRangeSelection = PageRangeSelection.AllPages;
        PrintQueue pq = pd.PrintQueue;
        pq.DefaultPrintTicket.PageOrientation = PageOrientation.Portrait;
        pd.PrintTicket = pq.DefaultPrintTicket;

        double pageWidth = pd.PrintableAreaWidth;
        double pageHeight = pd.PrintableAreaHeight;

        myPanel.Measure(new Size(pageWidth, pageHeight));
        //myPanel.Arrange(new Rect(new Point(1, 1), myPanel.DesiredSize));
        myPanel.UpdateLayout();

        if (pd.ShowDialog().GetValueOrDefault(false))
        {
            pd.PrintVisual(myPanel, "Attendance Chart");
        }

        pd = null;
        plw.Close();
        plw = null;
        myPanel = null;
        p1 = null;

        return;
    }

第三次打印的代码,即多页很长,因此现在还没有添加。如果需要,可以发布。

任何人都可以帮助我知道打印空白页面的原因,而其他系统上没有内容。我觉得可能需要某种兼容性或系统或资源或其他什么?

非常感谢任何帮助。

由于

0 个答案:

没有答案