私はopenxml sdk 2.5をEric Whiteの電動工具と組み合わせて使用しています。テンプレートファイルを使って動的なpptxプレゼンテーションを作成しました。 (In 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);
}
}
}
EDIT: 私はこの質問は(How to generate thumbnail image for a PPTX file in C#?)の前に尋ね、答えは「プレゼンテーションを保存するとき、プレビュースクリーンショットを有効にする」であるが、これは私がする必要があるだろう意味するだろうされています実現すべてのpptxを開き、このフラグを手動で設定します。私はC#のソリューションに感謝します。
ありがとうございます!