我将openxml sdk 2.5与Eric White的电动工具结合使用。我已经设法使用模板文件创建动态pptx演示文稿。 (在C#中) 不幸的是缩略图在这个过程中丢失了。
有没有什么办法(重新)使用openxml或电动工具创建pptx文件的缩略图?
我成功地编写了一些代码,用图像改变现有的缩略图。但是,如果没有缩略图,它会给我一个System.NullReferenceException。下面是代码:以编程方式更改/添加pptx powerpoint的缩略图。使用Openxml sdk?
using OpenXmlPowerTools;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DocumentFormat.OpenXml.Packaging;
namespace ConsoleApplication1
{
class AddThumbnail_
{
public static void ReplaceThumbnail(ThumbnailPart thumbnailPart, string newThumbnail)
{
using (
FileStream imgStream = new FileStream(newThumbnail, FileMode.Open, FileAccess.Read))
{
thumbnailPart.FeedData(imgStream);
}
}
static void Main(string[] args)
{
var templatePresentation = "Modified.pptx";
var outputPresentation = "Modified.pptx";
var baPresentation = File.ReadAllBytes(templatePresentation);
var pmlMainPresentation = new PmlDocument("Main.pptx", baPresentation);
OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(pmlMainPresentation);
PresentationDocument document = streamDoc.GetPresentationDocument();
var thumbNailPart = document.ThumbnailPart;
ReplaceThumbnail(thumbNailPart, @"C:\Path\to\image\image.jpg");
document.SaveAs(outputPresentation);
}
}
}
编辑: 我意识到这个问题以前(How to generate thumbnail image for a PPTX file in C#?)有人问,答案是“保存演示文稿时启用预览截图”,但是这将意味着我不得不打开每个pptx并手动设置此标志。我很感激C#解决方案。
预先感谢您!