2013-04-09 5 views
0

Windows 2003 서버에서 실행되는 ASP.NET 응용 프로그램에서 ASP.NET/Mono MVC2보기를 인쇄하는 방법을 찾고 있습니다. Programmatically "hello world" default SERVER-side printer in ASP.NET MVC서버에서 ASP.NET MVC2보기를 인쇄하는 방법

을 기반으로 아래 코드를 시도했지만 원시 html 문자열을 출력합니다. 자유 소프트웨어를 사용하여 서식이 지정된 텍스트로보기를 인쇄하는 방법은 무엇입니까?

주문 레이아웃은 html 부분보기로 생성됩니다. 서식있는 주문을 인쇄하는 다른 무료 방법이있는 경우 html 대신 다른 양식으로 레이아웃을 만들 수 있습니다.

Windows Forms WebBrowser 컨트롤을 사용하려면 무료 솔루션 만 필요하지만 Mono에서도 실행되는 MVC2 응용 프로그램에서는 적합하지 않습니다.

나는 Rotativa (http://nuget.org/packages/Rotativa/)를 들여다 보았지만 html을 인쇄 할 수없는 것처럼 보입니다. iTextSharp를 사용하여 PDF로 변환 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; 
} 
+0

봐 http://stackoverflow.com/questions/3696842/print-html-in-c-done –

+0

에 감사합니다. 참조 된 질문은 WinForms WebBrowser 컨트롤을 사용합니다. 이 기능은 IIS 서비스에서 실행되는 ASP.NET MVC2 응용 프로그램에서 작동합니까? WinForms 참조를 MVC2 프로젝트에 실제로 추가해야합니까? – Andrus

답변

-1
+1

감사합니다. 이 기사에서는 HTML 컨텐트를 인쇄하는 방법을 설명하지 않습니다. 코드 질문에서 프린터 이름을 'HP LaserJet 1200'으로 변경했습니다. 이것이 잘못된 것일 수 있습니다. html 또는 다른 레이아웃에서 주문을 인쇄하는 방법? 귀하의 링크를 사용하면 pdf로 HTML을 변환 할 수 있습니다 (참조 된 rotativa도 허용됩니다). 그러나 pdf를 어떻게 인쇄합니까? – Andrus

+0

http://stackoverflow.com/questions/14328001/printing-pdf-file-page-by-page-using-system-drawing-printing을 보셨습니까? –