我在ASP.NET Core 6中使用QuestPdf。该方法生成动态PDF。当我点击一个按钮时,该方法被触发,PDF自动下载到PC上。它在当地工作得很好。在IIS服务器上实现代码后,它将停止工作。其他一切工作都很完美-编辑,创建和删除-所以这不是数据库连接问题。当我单击触发该方法的按钮时,我得到:'此页面无法工作(remoteServerIp:8080)无法处理此请求。HTTP ERROR 500.'在标题中,它只显示'500 Internal Server Error ',在浏览器控制台中,我看到:服务器返回的状态为500()。我完全控制了IIS_IUSRS用户的MIME类型;.pdf MIME类型为“application/pdf”。我不知道还能是什么。
这是生成PDF的方法:
public IActionResult ImprimirProyectoPartidaOVERHEAD(int id)
{
var data = Document.Create(document =>
{
document.Page(page =>
{
var pageSize = new PageSize(612f, 840f);
page.Size(pageSize);
page.MarginLeft(60);
page.MarginRight(60);
page.MarginTop(30);
page.MarginBottom(30);
page.Background()
.AlignBottom()
.ExtendHorizontal()
.Height(115)
.Background("#000000");
page.Header().Height(240).Row(row =>
{
})
page.Content().PaddingVertical(10).Column(col1 =>
{
});
page.Footer()
.Column(txt =>
{
});
});
}).GeneratePdf();
MemoryStream stream = new MemoryStream(data);
return File(stream, "application/pdf", ".pdf");
}
1条答案
按热度按时间thtygnil1#
最后,我设法访问了IIS日志,在那里我看到问题是因为我在PDF中使用了一种字体,而这种字体没有安装在机器上。通过简单地下载并在服务器上安装此字体即可解决此问题。