我们需要将上传的PPT或PPTX文件转换为图像文件。我们使用以下(POC代码)在本地开发了此工作:
Application pptApplication = new Application();
Microsoft.Office.Interop.PowerPoint.Presentation pptPresentation = pptApplication.Presentations.Open2007(filePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
List<string> files = new List<string>();
for (int i = 1; i <= pptPresentation.Slides.Count; i++)
{
pptPresentation.SaveCopyAs(serverPath + randomId, PpSaveAsFileType.ppSaveAsPNG, MsoTriState.msoTrue);
files.Add(root + "Uploads/Slide" + i + ".PNG");
}
pptPresentation.Close();
现在,当此代码部署在Windows Server 2012 R2上时,我收到以下错误:
这个错误看起来像是一些访问权限问题,当我用谷歌搜索时,发现了一些我没有运气尝试过的解决方案,以下是其中的一些解决方案:
在服务器上安装Office-在服务器上安装Office毫无意义:(好吧,我已经安装并且仍然遇到相同的问题。
在服务器上安装Office Interop程序集-我找不到适用于Windows Server 2012的程序集,不支持我在这里https://www.microsoft.com/zh-cn/download/details.aspx?id=3508找到的程序集对于2012年,当我安装它不起作用。
尝试这种解决方案https://stackoverflow.com/a/30117146以及
我们无法切换到Aspose,Spire等付费解决方案
非常感谢对此线程的任何帮助。谢谢。
这是适用于所有服务器的缩小范围的解决方案,在7个月的成熟研究后,我将发布此解决方案。
就是这样,我能够将幻灯片转换为图像。
源代码
如果您对我使用的代码感兴趣:
Application pptApplication = new Application();
Microsoft.Office.Interop.PowerPoint.Presentation pptPresentation = pptApplication.Presentations.Open2007(Server.MapPath("~/tempslides/pptfilename.pptx"), MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
List<string> files = new List<string>();
for (int i = 1; i <= pptPresentation.Slides.Count; i++)
{
pptPresentation.SaveCopyAs(serverPath + randomId, PpSaveAsFileType.ppSaveAsPNG, MsoTriState.msoTrue);
files.Add(Server.MapPath("~/tempslides") + "/slide" + i + ".PNG");
}
pptPresentation.Close();
要运行以上代码,您需要在项目中添加对interop lib的引用。
希望这可以帮助您节省时间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句