【问题标题】:Aspose.Words Returning PDF as Stream does nothing (ASP.NET Web API)Aspose.Words 将 PDF 作为流返回什么都不做(ASP.NET Web API)
【发布时间】:2020-02-25 12:16:27
【问题描述】:

我们正在探索使用 Aspose.Words 在本地 API 中进行一些转换。

这对于使用 Aspose.Cells 的 Excel 工作表非常有效。

[HttpPost]
[Route("convert/excel")]
public async Task<IActionResult> ConvertExcel(IFormFile fileToConvert)
{
    var fileStream = new MemoryStream();
    fileToConvert.CopyTo(fileStream);
    var convertedFile = await pdfConverter.ConvertExcelAsync(fileStream);
    return File(convertedFile, "application/octet-stream");
}

但是,当对 Aspose.Words 使用完全相同的方法时,它什么也不做,实际上什么都不会持续几分钟然后超时。这不是转换的超时问题,因为文件为 200KB。

[HttpPost]
[Route("convert/word")]
public async Task<IActionResult> ConvertWord(IFormFile fileToConvert)
{
    var fileStream = new MemoryStream();
    fileToConvert.CopyTo(fileStream);
    var convertedFile = await pdfConverter.ConvertWordAsync(fileStream);
    return File(convertedFile, "application/octet-stream");
}

我尝试过各种形式的返回文件,但都没有成功。

return new FileStreamResult(convertedFile, "application/pdf");

实际的转换方式是这样的。

public Task<Stream> ConvertWordAsync(Stream fileStream)
{
    return Task.Factory.StartNew(() => ConvertWord(fileStream));
}

private Stream ConvertWord(Stream inputFile)
{
    var doc = new Document(inputFile);

    var outputFile = new MemoryStream();
    doc.Save(outputFile, Aspose.Words.SaveFormat.Pdf);
    //doc.Save(@"C:\ProgramData\foo.pdf", Aspose.Words.SaveFormat.Pdf); //THIS WORKS BUT NOT APPOPRIATE

    return outputFile;
}

我还更新了它以支持 HttpGet 并硬编码文件的路径,在浏览器中只是得到一个下载失败 - 网络错误。

【问题讨论】:

  • 你为什么使用Task.Factory.StartNew?在这里给你带来什么好处?
  • 在这种情况下...不是很多。最初我们打算收集 IFormFile 并处理它们。我不影响我的问题,我不相信(将仔细检查),因为 Excel 是相同的并且很好。
  • 那么你应该放弃它。它使代码复杂化,并没有给您带来任何好处。

标签: asp.net aspose.words


【解决方案1】:

Save 方法是否有可能在流的末尾返回内存流。

您应该在致电doc.Save 后立即尝试以下操作

outputFile.Seek(0, SeekOrigin.Begin);

【讨论】:

  • 谢谢!!我对Streams不太熟悉,有什么想法为什么Excel和Word之间会有区别?或者这只是组件之间 Save 方法中的不同行为?
  • 似乎 Cells 和 Words 之间的差异并非闻所未闻:forum.aspose.com/t/…
  • 哦,哇,那是在 2010 年发布的,今天显然仍然是个问题!谢谢帕特里克。 :)
猜你喜欢
  • 1970-01-01
  • 2014-11-29
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多