Мы изучаем использование Aspose.Words для некоторых преобразований в локальном API.
Это прекрасно работает для листов Excel с использованием Aspose.Cells.
[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 ничего не происходит, буквально ничего не продолжается в течение нескольких минут и затем время ожидания. Это не проблема тайм-аута с конвертацией, так как размер файла составляет 200 КБ.
[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 и жестко запрограммировал путь к файлу, а в браузере просто получил сбой загрузки - ошибка сети.