QuestPDF GeneratePdf在本地工作,但在IIS中的远程服务器上实现时则不能工作

xn1cxnb4  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(163)

我在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");
        }
thtygnil

thtygnil1#

最后,我设法访问了IIS日志,在那里我看到问题是因为我在PDF中使用了一种字体,而这种字体没有安装在机器上。通过简单地下载并在服务器上安装此字体即可解决此问题。

相关问题