【问题标题】:how to print ASP.NET MVC2 view from server如何从服务器打印 ASP.NET MVC2 视图
【发布时间】:2013-04-01 08:35:16
【问题描述】:

我正在寻找一种从 Windows 2003 服务器中运行的 ASP.NET 应用程序打印 ASP.NET/Mono MVC2 视图的方法。 我根据Programmatically "hello world" default SERVER-side printer in ASP.NET MVC尝试了下面的代码

但这会输出原始的 html 字符串。如何使用免费软件将视图打印为格式化文本?

订单布局创建为 html 局部视图。如果有其他免费的方式来打印格式化的订单,我可以用其他形式而不是 html 创建布局。

我发现只有免费的解决方案需要使用 Windows Forms WebBrowser 控件,但这在也运行在 Mono 下的 MVC2 应用程序中看起来不合理。

我查看了 Rotativa (http://nuget.org/packages/Rotativa/),但它似乎不允许打印 html。

using System.Drawing;
using System.Drawing.Printing;
using System.IO;
using System.Web.Mvc;

public class PrintController : Controller
{
    string body;
    public ActionResult Complete()
    {
        body = RenderViewToString<TestOrder>("~/Views/Checkout/Order.ascx", new TestOrder() { Number = "1" });
        PrintOrder();
        return View("PaymentComplete");
    }

    void PrintOrder()
    {
        // https://stackoverflow.com/questions/12229823/programmatically-hello-world-default-server-side-printer-in-asp-net-mvc
        var doc = new PrintDocument();
        doc.PrinterSettings.PrinterName = "HP Laserjet 1200";
        doc.PrintPage += new PrintPageEventHandler(ProvideContent);
        doc.Print();
    }

    void ProvideContent(object sender, PrintPageEventArgs e)
    {
        e.Graphics.DrawString(body,
          new Font("Arial", 12),
          Brushes.Black,
          e.MarginBounds.Left,
          e.MarginBounds.Top);
    }

    string RenderViewToString<T>(string viewPath, T model)
    { // https://stackoverflow.com/questions/483091/render-a-view-as-a-string
        ViewData.Model = model;
        using (var writer = new StringWriter())
        {
            var view = new WebFormView(viewPath);
            var vdd = new ViewDataDictionary<T>(model);
            var viewCxt = new ViewContext(ControllerContext, view, vdd, new TempDataDictionary(), writer);
            viewCxt.View.Render(viewCxt, writer);
            return writer.ToString();
        }
    }
}

public class TestOrder
{
    public string Number;
}

【问题讨论】:

标签: asp.net .net asp.net-mvc asp.net-mvc-2 printing-web-page


【解决方案1】:

有一篇关于使用 iTextSharp 将 HTML 转换为 PDF 的文章:http://www.dotnetspider.com/resources/43589-How-convert-HTML-PDF-ASP-NET.aspx

【讨论】:

  • 谢谢。本文不介绍如何打印 html 内容。我将代码问题中的打印机名称更改为“HP Laserjet 1200”,这可能具有误导性。如何从 html 或其他布局打印订单?使用您的链接,我可以将 html 转换为 pdf(引用的 rotativa 也允许),但是如何打印 pdf 呢?
猜你喜欢
  • 1970-01-01
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
  • 2019-08-25
  • 1970-01-01
  • 2010-11-09
  • 2014-01-19
相关资源
最近更新 更多