我编写的网站需要将网页转换为 PDF 功能。在查看了选项 HiQPdf 看起来是最好的选项并完成了所有需要的操作后,目前我正在使用免费版本,直到测试完成。
因此,按照说明,我创建了网页并将其传递给 PDF 创建器以及一个位置,以查找所有链接项目(主要是 css)。代码去
var model = new SomeKindOfModel
{
SetSomeStuff = stuff
};
string htmlToConvert = RenderRazorViews.RenderViewAsString(ControllerContext, "Print", model);
string baseUri = $"{Request.Url.Scheme}://{Request.Url.Authority}";
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory(htmlToConvert, baseUri);
return new FileContentResult(pdfBuffer, "application/pdf");
相当标准的代码。
现在,当我从 Visual Studio 运行它时,它可以正常工作,生成的 pdf 看起来正确,一切都在正确的位置。当我发布到计算机上的文件系统时,它工作正常。当我将上述文件复制到另一台笔记本电脑并通过它的 ipAddress 访问它时,它工作正常。
当我使用 web 部署包将其放在主测试服务器上时,会出现问题。此时pdf已创建,文本在那里,但没有样式,一切都是白底黑字。如果我在 cshtml 文件中包含一些样式,那么就会被拾取。网站上的其他所有内容都可以正常工作。我已将本地 site.css 添加到引导程序包中,但它们都没有被拾取
我认为该string baseUri
行没有将 pdf 创建者指向正确的位置,但我查看了变量中的内容并尝试了许多不同的变体,但没有任何效果。
我查看了中的文字,htmlToConvert
看起来正确,链接似乎指向正确的方向。
即使将链接标签添加到页面中,并将 css 的位置硬编码到其中,也不会获取 css。
是否有一些关于发布我在这里缺少的网站的巧妙方法?尽管开发 ASP.NET MVC 应用程序多年,这是我第一次真正不得不发布一个网站,在我以前的公司,这总是别人的问题。这里,是我的。