【问题标题】:convert byte[] to pdf and return it将 byte[] 转换为 pdf 并返回
【发布时间】:2018-06-16 03:04:59
【问题描述】:

如何将内存流写入pdf并导出?我在 .net core 2 中工作。

[Authorize]
[HttpGet]
public IActionResult getPdfDate(int id)
{
   ApplicationDbContext docs = new ApplicationDbContext();
   var data = docs.UsersDocs.FindAsync(id);       
   MemoryStream ms = new MemoryStream(data.Result.doc);
}

【问题讨论】:

  • 您需要做的一件事是表明您已经完成了一些研究。 “.net core 将流写入 PDF”是一个好的开始。这些参考资料都不适用的具体问题和代码是什么?
  • 附带说明(这只是一个小问题),您正在同步调用异步代码 (docs.UserDocs.FindAsync(id)) (data.Result.doc)。这将锁定执行线程,直到 FindAsync 完成,并且可能不利于性能。解决问题后需要注意的事项。

标签: pdf asp.net-web-api asp.net-core


【解决方案1】:

大概,您的doc 属性是一个byte[],它已经是一个“PDF”。因此,您只需使用适当的 mime 类型转储字节:

var data = await docs.UsersDocs.FindAsync(id);
return File(data.doc, "application/pdf");

正如@JamieTaylor 所指出的,您需要等待异步调用。否则,您将死锁线程。另外,不要在你的行动中更新你的上下文。在StartUp 中的ConfigureServices 中将其注册到您的服务中,然后将其注入您的控制器中:

public class FooController : Controller
{
    protected readonly ApplicationDbContext _context;

    public FooController(ApplicationDbContext context)
    {
        _context = context;
    }

    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2013-02-18
    • 2011-06-05
    相关资源
    最近更新 更多