如何在存储流中获取Word文件,将其存储在缓冲区中并以PDF格式返回?

时间:2018-06-28 09:59:20

标签: c# asp.net-mvc pdf itext office-interop

我在thisthisthis中搜索了很多有关如何在C#中将单词文件转换为pdf的信息,但似乎很简单:

1)itextsharp-需要许可证(负担不起)

2)Interop.Word-需要安装Office \ word才能使用它(不能这样做)

3)新颖的单词转pdf-需要许可证(买不起)

4)evopdf.word到pdf-与winnovative wordtopdf相同(无法负担) 5)在线api的安全漏洞

我在想是要在Filestream中获取数据并将其作为word文件进行处理,如下所示:

 HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
                FileStream fileStream = System.IO.File.OpenRead(FilePath);
                response.Content = new StreamContent(fileStream);
                response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");                
                return new FileContentResult(response.Content.ReadAsByteArrayAsync().Result, "application/pdf");

当然,此代码将无法正常工作,但我是否可以知道要添加哪些额外参数,或者将word转换为pdf转换器实际上是如何工作的?还是将Word文件转换为OpenXMl(将其读入某处),然后转换为PDf?预先感谢。

所有这些都是在MVC控制器中完成的。

编辑1。请注意,我已经提到不能使用Interop。所以这不是我想要的答案。

1 个答案:

答案 0 :(得分:0)

令人遗憾的是,OpenXML不是一个完整的选项,因为它不包含将Word文档转换为PDF文件的呈现引擎-它仅包含用于读取和解释OpenXML文件格式的SDK。 (请参阅:https://stackoverflow.com/a/18728669/9552003

读取文件后,您的代码将需要呈现阶段。 PDF是一种很棒的文件格式,但众所周知很难处理,因此推荐使用Interop或外部库。如果Interop对您而言不是可行的解决方案,则您可能必须使用iText之类的外部资源来实现所需的功能。