【问题标题】:Print RDLC report from server in C#在 C# 中从服务器打印 RDLC 报告
【发布时间】:2013-12-10 17:44:12
【问题描述】:

我正在创建一个 RDLC 报告并从 ASP.Net 打印它。当我在本地机器上尝试这个时,它工作正常。但是在服务器中部署时,打印机设置无效。

//代码

 if (m_streams == null || m_streams.Count == 0)
            throw new Exception("Error: no stream to print.");

        PrintDocument printDoc = new PrintDocument();

       // printDoc.PrinterSettings.PrinterName = "HP LaserJet 3055 PCL5";

        if (!printDoc.PrinterSettings.IsValid)
        {
            throw new Exception("Error: cannot find the default printer.");
        }
        else
        {
            printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
            m_currentPageIndex = 0;
            printDoc.Print();
        }

从上面的代码中,它向我抛出了一个异常“找不到默认打印机”。尝试添加客户端计算机中存在的打印机名称,但仍然无效。

我需要在客户端机器上打印报告。

不知道在哪里改变。有什么帮助吗?

【问题讨论】:

    标签: c# asp.net printing rdlc


    【解决方案1】:

    我相信你正在做一些你不应该做的事情。

    如果您有一个 ASP.NET 网站,则该网站中有一个 RDLC 报告。如果我访问该报告,我想在我的机器上打印,而不是在服务器上。您确定要让服务器打印报告吗?客户端/浏览器不应该发出打印命令吗?

    如果您的服务器在数据中心,而我在家里,应该在哪里打印?除非您想在服务器中打印(例如 Mail Merge 贴纸)。

    【讨论】:

    • 更新了问题。需要从后面的代码在客户端机器上打印。我该怎么办?
    • 看看我添加到 Serv 答案中的评论。
    【解决方案2】:

    据我所知,无法访问客户端的打印机设置。你正在做的是访问服务器打印机,如果我是对的,它没有安装。

    您可以通过在 javascript 中调用 window.print() 来打印访问浏览器/javascript 功能,因为浏览器正在客户端运行并且可以访问打印机。但是直接访问客户端系统资源将是一个巨大的安全漏洞。

    也许有一个晦涩难懂的解决方法/黑客,但这将是一个糟糕的解决方案

    【讨论】:

    • 现在我需要在客户端机器上打印它。我能怎么做?来自后面的代码。
    • 看看如何在客户端打印:codeproject.com/Tips/569335/…
    • 是的,最终归结为 javascript。
    猜你喜欢
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    相关资源
    最近更新 更多