-1

WPF レポート アプリケーションを開発しています。

私のレポートは WPF コントロール (FlowDocument または FixedDocument) として構築され、テーブルが含まれています。構造を保持したまま XPS として保存したい (これは、この記事で説明されているようなプレーン テキストではなく、テーブルをテーブルとしてコピーできることを意味します)。XpsDocumentWriter または XpsSerializationManager で WPF コントロールを保存する方法を見つけましたが、結果に構造やアウトラインがありません。

WPF コントロールをその構造を保持する Xps として保存することは可能ですか?

4

2 に答える 2

1

XPS は固定ドキュメント形式であり、WPF を使用すると、FlowDocument を FixedDocument に XPS ファイルとして保存できます。さらに機能を追加する場合はコードが必要です。この記事に従って、さらに先に進むことができます。

XAML フロー ドキュメントをスタイル付きの XPS に変換 (複数ページ、ページ サイズ、ヘッダー、余白)

于 2015-01-28T13:36:11.527 に答える
1

XpsDocumentWriterorでシリアル化するときに WPF 要素のセマンティクスを保持する方法がないようXpsSerializationManagerです。この記事

で説明されているように 、構造を持つドキュメントを構築する唯一の方法は、System.Windows.Xps.Packaging名前空間から低レベル API を使用することです。この API を使用して、コンテンツ を構築するために取得できますXmlWriterFixedPage

XpsDocument document = new XpsDocument(destFileName,FileAccess.ReadWrite); 
IXpsFixedDocumentSequenceWriter docSeqWriter = document.AddFixedDocumentSequence(); 
IXpsFixedDocumentWriter docWriter = docSeqWriter.AddFixedDocument(); 
IXpsFixedPageWriter pageWriter = docWriter.AddFixedPage();
XmlWriter xmlWriter = pageWriter.XmlWriter;

Stream文書構造を書くための

XpsResource storyFraments = pageWriter.AddStoryFragment();
Stream stream = storyFraments.GetStream();

System.Windows.Documents.DocumentStructures名前空間には要素とその子を表すクラスがありStoryFragmentsますが、リソース ストリームへの書き込み中にそれらを使用することはできません。

于 2015-01-29T10:57:17.057 に答える