C# 在服务器(Asp.Net Core)中生成PDF并在浏览器(Angular)中检索

C# 在服务器(Asp.Net Core)中生成PDF并在浏览器(Angular)中检索,c#,angular,asp.net-web-api,C#,Angular,Asp.net Web Api,我正在使用Asp.Net Core和ItextSharp生成PDF报告并发送到浏览器 [HttpGet] public async Task<IActionResult> GetStream(string ids) { try { List<int> labRequestIds = JsonConvert.DeserializeObject<List<int>>(requestIds);

我正在使用Asp.Net Core和ItextSharp生成PDF报告并发送到浏览器

[HttpGet]
public async Task<IActionResult> GetStream(string ids)
{
  try
        {
            List<int> labRequestIds = JsonConvert.DeserializeObject<List<int>>(requestIds);
            MemoryStream ms = new MemoryStream();
            Document doc = new Document(PageSize.A4, 30f, 30f, 30f, 30f);
            PdfWriter writer = PdfWriter.GetInstance(doc, ms);
            doc.Open();
            await CreatePlateDoc(labRequestIds, doc);
            doc.Close();
            writer.Flush();
            ms.Seek(0, SeekOrigin.Begin);
            return File(ms, "application/pdf");
         }
}

但它不起作用。下载的pdf是空的,但有相关信息。

最后我这样解决了它:

  public async Task<IActionResult> CreatePlatePdf(string dto)
    {
        try
        {
            List<int> dto= JsonConvert.DeserializeObject<List<int>>(dto);
            MemoryStream ms = new MemoryStream();
            Document doc = new Document(PageSize.A4, 30f, 30f, 30f, 30f);
            PdfWriter writer = PdfWriter.GetInstance(doc, ms);

            doc.Open();
            await this.CreateDoc(dto, doc);
            doc.Close();
            writer.Flush();
            byte[] byteInfo = ms.ToArray();
            ms.Write(byteInfo, 0, byteInfo.Length);
            ms.Seek(0, SeekOrigin.Begin);
            return this.File(ms, "application/pdf", fileName.pdf);
        }
}

所以现在我唯一的问题是你可以在没有授权的情况下调用它。有人知道如何在调用我的设备时添加授权(标题)吗?

知道如何解决这个问题吗?提前谢谢。您所说的
是空的,但有相关信息是什么意思?是0字节吗?或者它有空白页面?当我用notepad++打开它时,它有代码,但当我用adobe打开它时,页面是空白的。当你直接从浏览器从控制器调用操作时会发生什么?比如:如果我称之为pdf,屏幕上显示的是全新的好东西。那么,我应该怎么做才能直接下载生成的pdf,或者至少在点击按钮后显示此链接
downloadClick() {      
    this._fileGeneratorService.getPlateStream(this.selectedRequestIds)
        .then(data => {
            let saveAs = require('file-saver');
            let name = this.selectedRequests.map(function (x) {
                return x.code;
            }).join();
            let blob = new Blob([data], { type: 'application/pdf });
            saveAs(blob, name);
        })
        .catch(err => console.log(err));
}
  public async Task<IActionResult> CreatePlatePdf(string dto)
    {
        try
        {
            List<int> dto= JsonConvert.DeserializeObject<List<int>>(dto);
            MemoryStream ms = new MemoryStream();
            Document doc = new Document(PageSize.A4, 30f, 30f, 30f, 30f);
            PdfWriter writer = PdfWriter.GetInstance(doc, ms);

            doc.Open();
            await this.CreateDoc(dto, doc);
            doc.Close();
            writer.Flush();
            byte[] byteInfo = ms.ToArray();
            ms.Write(byteInfo, 0, byteInfo.Length);
            ms.Seek(0, SeekOrigin.Begin);
            return this.File(ms, "application/pdf", fileName.pdf);
        }
}
downloadPlatesClick() 
{
    window.location.href = url_pdf;
}