IXpsOMPackageWriter インターフェイスの使用
IXpsOMPackageWriter インターフェイスは、アプリケーションが XPS OM の IXpsOMPage インターフェイスの内容を書き込める XPS ドキュメント ファイルを作成します。 IXpsOMPackageWriter インターフェイスは、ドキュメントの内容を順番に処理または作成する場合に最も役立ちます。 IXpsOMPackage インターフェイスの WriteToFile メソッドと WriteToStream メソッドとは異なり、IXpsOMPackageWriter インターフェイスを使用する場合は、FixedDocument 全体も FixedDocumentSequence のいずれも完了する必要はありません。
概要
IXpsOMPackageWriter インターフェイスは、XPS ドキュメントの最初のページから最後のページまで、一度に 1 ページずつ書き込みます。 このインターフェイスを使用すると、単純な XPS ドキュメント ファイルと、FixedDocumentSequence に複数の FixedDocument を含む複雑な XPS ドキュメント ファイルを作成できます。 複雑な XPS ドキュメント ファイルでは、FixedDocumentSequence の最初の FixedDocument 以降、FixedDocument も順番に作成されます。 IXpsOMPackageWriter インターフェイスでは、ランダムな順序でのドキュメント コンテンツの作成はサポートされていません。 たとえば、順次レポートを作成したり、ドキュメントの内容がドライバーに順番に送られるデバイス ドライバー フィルターで処理を実行したりするために使用します。
用語の復習
XPS ドキュメント ファイルは、XML Paper Specification に準拠する Open Packaging Conventions (OPC) パッケージです。 つまり、技術的には、IXpsOMPackageWriter インターフェイスは OPC パッケージを作成しますが、これは XML Paper Specification に準拠した OPC パッケージです。 このため、XPS ドキュメントに関する説明では、XPS ドキュメントとパッケージという用語が多くの場合に同じ意味で使用されます。
IXpsOMPackageWriter インターフェイスによって作成されたパッケージには、必要な XPS ドキュメント コンポーネント (FixedDocumentSequence、1 つ以上の FixedDocument、および 1 つ以上の FixedPage) が含まれます。 FixedDocumentSequence は、IXpsOMPackageWriter インターフェイスがインスタンス化された際に作成されます。 FixedDocument はIXpsOMPackageWriter::StartNewDocument が呼び出されるたびに作成され、IXpsOMPackageWriter::AddPage が呼び出されるたびに FixedPage が作成されます。 インターフェイスはドキュメントの内容を順番に書き込むため、AddPage メソッドは、最後に作成された FixedDocument にページを追加します。
IXpsOMPackageWriter インターフェイスの使用
次の手順では、IXpsOMPackageWriter インターフェイスを使用して XPS ドキュメント ファイルを作成する方法について説明します。 このプロシージャでは、IXpsOMPage インターフェイスとその内容をインスタンス化する方法については説明していません。 IXpsOMPage とページへのコンテンツの追加の詳細については、「XPS OM ページ インターフェイス」および「関連項目」セクションに一覧表示されているトピックを参照してください。
ドキュメントの作成
IXpsOMPackageWriter インターフェイスをインスタンス化します。
これにより、パッケージに空の FixedDocumentSequence が作成されます。
- ファイルに XPS ドキュメントを作成するには、IXpsOMObjectFactory::CreatePackageWriterOnFile を呼び出します。
- ストリームに XPS ドキュメントを作成するには、IXpsOMObjectFactory::CreatePackageWriterOnFile を呼び出します。
IXpsOMPackageWriter::StartNewDocument を呼び出して、パッケージ内の新しいドキュメントを開始します。
ページを追加する前に、IXpsOMPackageWriter::StartNewDocument を呼び出して、手順 1 で作成した FixedDocumentSequence に FixedDocument を追加します。
コンテンツを追加します。
- ドキュメントに新しい FixedPage を追加するには、IXpsOMPackageWriter::AddPage を呼び出し、追加する FixedPage の内容を含む IXpsOMPage インターフェイスへのポインターを渡します。
- FixedDocumentSequence で新しい FixedDocument を作成するには、IXpsOMPackageWriter::StartNewDocument を呼び出します。
IXpsOMPackageWriter::Close を呼び出して、パッケージとその内容を閉じます。
高度な機能
IXpsOMPackageWriter インターフェイスのメソッドでは、リソース、サムネイル、および印刷チケットの追加もサポートされています。 これらのドキュメント コンポーネントは、パッケージ、FixedDocumentSequence、FixedDocument、および FixedPage レベルで追加できます。 このインターフェイスを印刷に使用する方法の詳細については、「XPS OM を印刷する」を参照してください。
関連トピック