Microsoft PowerPoint のカスタム アドインを開発しています。私のアドインは、大量のバイナリ データを PowerPoint プレゼンテーションに保存する必要があります。このバイナリ データを Base 64 でエンコードされた文字列として PowerPoint プレゼンテーション タグに保存します。プレゼンテーションのタグに大量のデータ (10 メガバイト以上など) が含まれている場合、プレゼンテーションを保存するときに PowerPoint でメモリ リークが発生しているようです。そのため、このようなプレゼンテーションを複数回保存すると、PowerPoint でもシステム メモリが不足してクラッシュします。
問題を切り分けるために、非常に単純な C# アドインを開発しました。新しいプレゼンテーションが作成されると、50 メガバイトのバイナリ データがプレゼンテーションに格納されます。
private void Application_AfterNewPresentation(PowerPoint.Presentation presentation)
{
int tagLength = 5 * 1000 * 1000;
StringBuilder largeTagValue = new StringBuilder();
largeTagValue.Capacity = tagLength + 2;
for (int i = 0; i < tagLength; i++)
{
largeTagValue.Append("A");
}
largeTagValue.Append("\0");
string largeTagValueString = largeTagValue.ToString();
for (int i = 0; i < 10; i++)
{
presentation.Tags.Add("LARGE_TAG" + i.ToString(), largeTagValueString);
}
}
このアドインを実行した後、それ以上何もしないようにするために無効にすることさえあります。次に、プレゼンテーションを複数回保存していますが、プレゼンテーションを保存するたびにプロセス リストの PowerPoint メモリ使用量が増加していることがわかります。
完全なソース コードとサンプル プレゼンテーションは、こちらから入手できます。
それが PowerPoint のバグなのか、それとも回避策があるのか 誰か知っていますか? ...
または、比較的大量のデータを PowerPoint プレゼンテーションに保存する別の方法はありますか?