打印问题(还有pageSettings、pagePreview)

本文关键字:pagePreview pageSettings 还有 问题 打印 | 更新日期: 2023-09-27 18:25:32

我在打印方面遇到了一些问题。我已经编写了一个程序,当我在Visual Studio中运行时,它的工作非常完美。调用"打印"、"页面设置"answers"页面预览"的按钮可以毫无问题地完成所有操作。但是,当我从发布文件夹运行程序(在构建发布之后),然后单击按钮时,我会收到错误的消息:您的应用程序中发生了未处理的异常。如果单击"继续"。。。等等

异常文本

System.Drawing.Printing.InvalidPrinterException: No printers are installed.

上面说没有安装打印机,但事实并非如此。为什么它在VS下工作?

好的,我写了一个小程序,我调用printPreviewDialog和printDialog。打印正在由printDocument完成。所以,我有一个有两个按钮的表格。

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        e.Graphics.DrawString("Hello World", new Font("Times New Roman", 16, FontStyle.Bold), Brushes.Black, 10, 10);
    }
    private void button1_Click(object sender, EventArgs e)
    {
        printPreviewDialog1.Document = printDocument1;
        printPreviewDialog1.ShowDialog();
    }
    private void button2_Click(object sender, EventArgs e)
    {
        printDialog1.Document = printDocument1;
        printDialog1.ShowDialog();
    }

当我在VS中运行这段代码时,一切都很完美,但当我从Release或Debug文件夹运行它时,程序返回异常:没有安装打印机。我已经试过两台电脑和一台虚拟机,但在任何地方我都得到了同样的结果。

打印问题(还有pageSettings、pagePreview)

若要调试ASP.NET应用程序,您必须是运行ASP.NET Web服务器的计算机上的管理员,或者如果ASP.NET工作进程在您的用户帐户下运行,则您的名称必须在Debugger Users组中。而ASP.NET应用程序在默认情况下作为NetworkService凭据运行

打印机通常安装在用户的配置文件中(尤其是如果是网络打印机,而不是USB或并行电缆等物理连接的打印机)。当您以管理员身份登录时所看到的并不一定意味着当其他用户在同一台计算机上登录时,它们将可用。由于ASP.NET应用程序作为NetworkService运行,因此web应用程序不太可能在那里看到打印机。

因此,请为.NET应用程序池创建一个运行帐户,然后为该用户提供连接到打印机或添加打印机的权限。

对于Windows应用程序或普通.Net应用程序,当您在Visual Studio上运行时,它以管理员权限运行,但当您安装可执行文件并尝试访问打印机时,您可能会遇到此错误,因为运行此应用程序的用户帐户可能无权访问该打印机

所以我建议一步一步地通过

.Net独立应用程序

  1. 请检查是否设置了默认打印机
  2. 检查默认打印机或您想通过代码使用的任何其他打印机是否应该具有必要的权限,以便当前登录的用户可以访问它。为此,请转到"打印机设置"->"选择打印机"->右键单击它并打开"打印机属性"。在"安全"选项卡中,检查与您一起运行应用程序的当前登录用户是否有权访问该打印机
  3. 如果仍然不起作用,请尝试将权限授予用户"Everyone"。它应该起作用。在这种情况下,可能很容易弄清楚安装后出现了什么问题

ASP.NET应用程序

  1. 在这种情况下,首先需要澄清的是,您的代码在服务器上执行,而不是在本地机器上执行。您无法通过ASP.NET控制用户计算机上的打印。因此,请检查服务器上是否安装了打印机,并且其中一台打印机标记为默认打印机。当您在调试模式下在本地环境中运行代码时,可能会在您的计算机上安装了打印机,但当您在其他服务器上托管应用程序时,该服务器上没有安装打印机
  2. 如果是,请尝试将打印机设置为默认打印机
  3. 为此,请转到"打印机设置"->"选择打印机"->右键单击并打开"打印机属性"。在安全选项卡中,检查用户"网络服务"是否有权通过该打印机进行打印,如果没有,则将相关权限授予"网络服务"

请进行这些检查,我希望解释清楚,我能够通过这件事为您提供必要的帮助。