Я использую openxml sdk 2.5 в сочетании с электроинструментами Эрика Уайта. Мне удалось создать динамические презентации pptx с использованием файлов шаблонов. (In C#) К сожалению, миниатюра теряется во время процесса.
Есть ли способ (re) создать миниатюру pptx-файла с помощью openxml или инструментов электропитания?
Я успешно написал код, который изменяет существующий эскиз с изображением. Но когда нет миниатюры, это дает мне 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);
}
}
}
EDIT: Я понимаю, что этот вопрос был задан до (How to generate thumbnail image for a PPTX file in C#?) и ответ «включить скриншот предварительного просмотра при сохранении презентации», но это означало бы, что я должен откройте каждый pptx и вручную установите этот флаг. Я был бы признателен за решение C#.
Спасибо заранее!