各ドキュメント内の画像などを含めて、複数の FlowDocument を 1 つのパッケージ内に格納できるようにしたいと考えています。ただし、Xaml FlowDocuments を保存 (および読み込み) するために私が見た方法はどれもこれに対応していないようです。
- DataFormats.Xaml を使用した TextRange.Save は、画像やその他の埋め込みコンテンツを取り除きます
- TextRange.Save with DataFormats.XamlPackage は、ドキュメントと含まれる画像を、保存するパッケージ内の一部として扱うのではなく、まったく新しいパッケージを作成します。
- XamlWriter はこれに適しているように見えますが、独自のパーツを配置するためのすべての埋め込みオブジェクトを見つける方法がわかりません (見つけたら、それらを処理する方法は確かに知っています)。一方で、後ですべてを適切にロードする方法がわかりません。
FlowDocument とその画像などを PackagePart にシリアル化するためのワンストップの方法がないのは、かなり面倒です。誰かがこれを行う良い方法を考え出した場合、どのようにそれをやってのけたのですか?
UPDATE 2011-07-03 00:22: XamlWriterとこの質問の追加コードを使用して、PackageParts として画像を含む複数の FlowDocuments を保持できる、小さな OPC 準拠のパッケージを作成できました。ただし、他の方法 (PackagePart から FlowDocument へ) は失敗します。ドキュメントをどのように読み込もうとしても、XamlParseExceptions がそれを教えてくれるからです。
「'System.Windows.Media.Imaging.BitmapImage' の初期化で例外がスローされました。」
したがって、問題は、関連する画像を適切にロードするために、XamlReader.Load やパーツのストリームを操作するにはどうすればよいですか?