c# - 如何在 MVC 4 中打印 HTML 字符串?
问题描述
我想用html制作发票,并想直接打印而不在对话框中预览。我创建了一个 ASCX 类型的部分视图,并在 MVC 的控制器中呈现为 HTML 字符串。现在我想打印这个 HTML 字符串的输出。
我的代码是这样的:
public void Print(int saleId)
{
var doc = new PrintDocument();
PrinterSettings settings = new PrinterSettings();
string defaultPrinterName = settings.PrinterName;
doc.PrinterSettings.PrinterName = defaultPrinterName;
//doc.PrintPage += new PrintPageEventHandler(ProvideContent);
//doc.Print();
doc.PrintPage += (sender, args) => ProvideContent(saleId, args);
doc.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("PaperA0", 460, 480);
doc.Print();
}
public ActionResult ProvideContent(object sender, PrintPageEventArgs e)
{
string ret = RenderPartialToString("~/Areas/PointOfSale/Views/POSSaleItemUI/POSSaleItemReport.ascx", sender);
e.Graphics.DrawString(
ret,
new Font("Arial", 12),
Brushes.Black,
e.MarginBounds.Left,
e.MarginBounds.Top);
return View("test");
}
public static string RenderPartialToString(string controlName, object viewData)
{
ViewPage viewPage = new ViewPage() { ViewContext = new ViewContext() };
viewPage.ViewData = new ViewDataDictionary(viewData);
viewPage.Controls.Add(viewPage.LoadControl(controlName));
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
using (HtmlTextWriter tw = new HtmlTextWriter(sw))
{
viewPage.RenderControl(tw);
}
}
return sb.ToString();
}
解决方案
推荐阅读
- postgresql - 是否可以将 Postgresql 数据库从 Amazon RDS 复制到另一个 Amazon RDS?
- android - ListView ArrayAdapter 没有从 SQLite 获得任何数据
- python - 在电子表格上添加行超过 100 秒的用户配额
- xamarin - Xamarin Forms + MvvmCross 平台渲染器问题
- python - 在 python 3 中的选择查询上使用 fetchone,语法混乱
- date - DataPrep - 查找第一个日期
- php - laravel 中的 hasManyThrough 关系更新失败
- javascript - 替换javascript中的样式值
- mysql - MySQL查询酒店房间可用性
- postgresql - Postgres 查询报告