【问题标题】:Use PdfReport.Core in a WEB-API .NET CORE 2在 WEB-API .NET CORE 2 中使用 PdfReport.Core
【发布时间】:2018-01-29 12:59:12
【问题描述】:

我正在调查PdfReport.Core,并被要求让我们的 .NET CORE 2.0 WEB-API 将 PDF 返回给调用客户端。客户端可以是任何 https 调用者,例如 ajax 或 mvc 客户端。
下面是我正在使用的一些代码。我正在使用 swashbuckle 测试 api,看起来它正在返回报告,但是当我尝试在 PDF 查看器中打开它时,它说它已被修改。我在想我实际上并没有将实际的 PDF 输出到流中,建议?

    [HttpGet]
    [Route("api/v1/pdf")]
    public FileResult GetPDF()
    {

            var outputStream = new MemoryStream();
            InMemoryPdfReport.CreateStreamingPdfReport(_hostingEnvironment.WebRootPath, outputStream);
            outputStream.Position = 0;
            return new FileStreamResult(outputStream, "application/pdf")
            {
                FileDownloadName = "report.pdf"
            };


    }

【问题讨论】:

    标签: c# pdf asp.net-core-2.0 .net-core-2.0


    【解决方案1】:

    我不熟悉那个特定的库,但一般来说,对于流,文件损坏是由于 1) 写入未刷新或 2) 在流中定位不正确。

    由于您已将位置设置回零,我猜问题是您的写入未正确刷新。本质上,当您写入流时,流中的数据不一定是“完整的”。有时写入排队以更有效地批量写入。有时,特定的流编写器需要完成一些清理任务才能“完成”所有内容。例如,对于像 PDF 这样的格式,可能需要将最终内容附加到字节,特别是格式。正在写入 PDF 的流编写器将在刷新操作中处理此问题,因为在所有写入完成之前无法完成。

    长话短说,查看图书馆的文档。特别是,寻找任何处理“冲洗”的方法/过程。这很可能是您所缺少的。

    【讨论】:

      猜你喜欢
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 2017-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多