C# 不使用Office转换Office文档

C# 不使用Office转换Office文档,c#,ms-office,C#,Ms Office,我们需要将所有MS Office文档转换为PDF、TIFF或任何类似的图像格式,而不会丢失格式(这些是不能篡改的官方文档) 有没有办法不用在机器上安装Office就可以做到这一点?理想情况下,这将在服务器上运行多线程,而不会产生办公自动化的开销。您可以使用第三方库(如Aspose.NET)进行文档转换,但我担心,如果高保真度渲染至关重要,则无法使用原始应用程序 Microsoft Office提供了一个转换器API,允许在不安装Office的情况下进行转换。但是,不仅您可能面临许可证问题(IAN

我们需要将所有MS Office文档转换为PDF、TIFF或任何类似的图像格式,而不会丢失格式(这些是不能篡改的官方文档)


有没有办法不用在机器上安装Office就可以做到这一点?理想情况下,这将在服务器上运行多线程,而不会产生办公自动化的开销。

您可以使用第三方库(如Aspose.NET)进行文档转换,但我担心,如果高保真度渲染至关重要,则无法使用原始应用程序

Microsoft Office提供了一个转换器API,允许在不安装Office的情况下进行转换。但是,不仅您可能面临许可证问题(IANAL),此API仅支持不需要呈现文档的文本处理格式的转换(例如RTF->DOC,DOC->DOCX),因此它实际上不是您的选项


更新:最好的选择可能是看看SharePoint 2010转换引擎,它正是为自动化(服务器端)文档转换而设计的。但它相当繁重(硬件和定价),因此对于您的用例来说,这可能是一种过度使用。

如果此应用程序将在专用机器上运行(即机器的唯一任务是转换大量Office文档),您最安全的选择可能是以单线程方式使用Office automation,并让应用程序愉快地一次转换一个文件。多线程办公自动化应用程序可能会以更快的整体速度转换文档(尤其是在多核处理器上),直至服务器崩溃


Office Open XML是一种非Office自动化的替代方案,但由于我目前正在与它在导出到相对较小的Excel文件(~1MB)时产生
OutOfMemoryException
错误的趋势作斗争,所以我不能真正推荐它。

很有趣,你提到了Aspose,因为他们的工具似乎与我在Office Open XML中遇到的问题完全相同(最接近的错误总是.Net试图设置流的最大大小,由xmlwriter正在执行的操作触发)。