我使用TuesPechkin从动态Html中停止Pdfs。 身体很容易,因为它可以采取Html字符串,标题和&但是只有网页才会占用网址。 我把它们存储在本地atm作为html,我可以将它们带入文档,但没有任何动态内容。
有没有办法使用Razor或类似的方法带来这样的值 -
var document = new HtmlToPdfDocument
{
GlobalSettings = new GlobalSettings(),
Objects =
{
new ObjectSettings
{
HtmlText = "<p>Some Html</p>",
Footer = new FooterSetting { PageUrl = "file://C:/file.cshtml?Name=name" }
}
}
};
Html看起来像
<html>
<p>Name: @Request["name"]</p>
</html>
该项目只是一个类库,所以我相信它缺少运行剃刀所需的一些方面?
提前感谢任何输入。
答案 0 :(得分:1)
您可以尝试将剃刀代码渲染为字符串,然后将其保存为文件,最后将文件导出为PDF。
有时这样:
Razor to String
public 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();
}
}
导出为PDF
public void MyPDFExport()
{
string url = @"d:\Foo.html";
string html = RenderRazorViewToString("File", "myName");
System.IO.File.WriteAllBytes(url, System.Text.Encoding.ASCII.GetBytes(html));
var document = new HtmlToPdfDocument
{
GlobalSettings = new GlobalSettings(),
Objects =
{
new ObjectSettings
{
HtmlText = "<p>Some Html</p>",
FooterSettings = new FooterSettings { HtmlUrl = url }
}
}
};
IConverter converter =
new ThreadSafeConverter(
new RemotingToolset<PdfToolset>(
new Win32EmbeddedDeployment(
new TempFolderDeployment())));
byte[] result = converter.Convert(document);
}
查看File.cshtml
@model string
<html>
<p>Name: @Model</p>
</html>