0
我想以表格形式獲取所有學生信息,因此我創建了適當的視圖。現在,我可以製作該視圖的pdf報告(通過將該視圖傳遞給任何操作),看起來完全一樣,視圖正在查找?如何在mvc3中製作特定視圖的pdf報告
我想以表格形式獲取所有學生信息,因此我創建了適當的視圖。現在,我可以製作該視圖的pdf報告(通過將該視圖傳遞給任何操作),看起來完全一樣,視圖正在查找?如何在mvc3中製作特定視圖的pdf報告
簡短的回答是不容易,你可以使用iTextSharp的(上的NuGet可用)和嘗試以下操作:
public EmptyResult CreatePdf()
{
var document = new Document(PageSize.A4, 50, 50, 25, 25);
// Create a new PdfWriter object, specifying the output stream
var output = new MemoryStream();
var writer = PdfWriter.GetInstance(document, output);
// Open the Document for writing
document.Open();
var html = RenderRazorViewToString("PdfView", pdfViewModel);
var worker = new HTMLWorker(document);
var css = new StyleSheet();
css.LoadTagStyle(HtmlTags.TH, HtmlTags.BGCOLOR, "#616161");
css.LoadTagStyle(HtmlTags.TH, HtmlTags.COLOR, "#fff");
css.LoadTagStyle(HtmlTags.BODY, HtmlTags.FONT, "verdana");
css.LoadTagStyle(HtmlTags.TH, HtmlTags.FONTWEIGHT, "bold");
css.LoadStyle("even", "bgcolor", "#EEE");
worker.SetStyleSheet(css);
var stringReader = new StringReader(html);
worker.Parse(stringReader);
document.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "PdfView.pdf");
Response.BinaryWrite(output.ToArray());
return new EmptyResult();
}
private string RenderRazorViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
您將需要的樣式和結果HTML擺弄得到它與合作HtmlWorker壽。
HTH
硅