gpt4 book ai didi

c# - 从 asp.net 在服务器端打印 .NET

转载 作者:行者123 更新时间:2023-12-04 12:01:34 28 4
gpt4 key购买 nike

我有一台运行 ASP.NET 应用程序的 Windows 服务器和一台连接到这台机器的本地打印机。我需要从服务器端代码打印一些文档。

到目前为止,我知道,.NET 中没有服务器端(服务)支持的托管 API。

  • System.Printing 命名空间 - 是 WPF 的一部分,不支持在服务器端运行,因为它可能会产生运行时异常(在 msdn 上检查)
  • System.Drawing.Printing - 是 WinForms 的一部分,也不支持在服务器端运行(在 msdn 上检查)

  • 早在 2009 年,在 Microsoft 的帮助下就详细阐述了相同的问题,解决方案是使用非托管 XPS Print API 作为当时唯一受支持的方法。已发布示例的问题描述和解决方案在这里: How to Print a Document on a Server via the XpsPrint API

    但是现在这是一个问题,因为 XPS Print API 被标记为不支持并且将来可能不可用 ( msdn )。

    那么,从服务器端代码打印支持的方式是什么?

    看起来可能有更多的 Win32 API 可以使用,但是网络上没有任何信息,这可能是一场噩梦......

    接受商业解决方案。谢谢你。

    最佳答案

    因此,最好的方法是在打印服务器上设置打印机,然后在 Web 服务器上安装打印驱动程序,并引用要打印到的打印机。
    然后在代码中,您可以使用 System.Drawing.Printing 将打印作业发送到您刚刚安装的任何打印机。

    PrintDocument p1 = new PrintDocument();
    p1.PrinterSettings.PrinterName = "\\PrintServer\NewPrinter";
    p.PrintPage += new PrintPageEventHandler(this.Page_Print);
    p1.Print();

    protected void Page_Print(object sender, PrintPageEventArgs ev)
    {
    Brush b = new SolidBrush(Color.Black);
    Font printFont = new Font("Lucida Sans Typewriter", 10);
    ev.Graphics.DrawString("Hello World", printFont, b, x, y, StringFormat.GenericDefault);
    }
    这段代码在技术上可以工作的地方我不建议这样做,因为微软本身说这不受支持。
    我个人会将所有打印作业推送到客户端。像您一样在本地安装打印机,然后将用户重定向到他们可以轻松打印的页面。
    如果需要,您可以编写 JavaScript 为它们调用特定于浏览器的打印(如果您也想自动化)
    或者保存 PDF 服务器端并将文件作为下载推送给用户,让他们下载/保存,然后通过 Adob​​e Reader 或替代应用程序打印文档。

    关于c# - 从 asp.net 在服务器端打印 .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37654039/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com