Créer un OM XPS vide
Cette rubrique décrit comment créer un OM XPS vide. Il présente les exemples de code qui illustrent comment utiliser un modèle OM XPS pour générer la structure de document d’un document XPS avec une page vierge.
Pour être enregistré en tant que document XPS, l’OM XPS nécessite au moins les composants suivants :
- Une interface IXpsOMPackage qui décrit le package de document XPS
- Une interface IXpsOMDocumentSequence qui contient l’infrastructure du contenu du package
- Une interface IXpsOMDocument qui contient l’infrastructure d’un document dans le package
- Une interface IXpsOMPageReference qui contient la collection de pages du document
- Une interface IXpsOMPage qui contient une page vierge
Lorsque ces interfaces sont utilisées, l’OM XPS contient un document qui a une page vierge. Pour créer ce document dans un OM XPS, le programme doit d’abord créer les composants individuels, puis les associer ensemble.
Avant d’utiliser les exemples de code suivants, lisez l’exclusion de responsabilité dans Tâches courantes de programmation de documents XPS.
Exemples de code
L’exemple de code suivant suppose que l’initialisation, décrite dans Initialiser un OM XPS, a réussi.
// Declare the variables used in this section.
HRESULT hr = S_OK;
IOpcPartUri *opcPartUri = NULL;
IXpsOMPackage *xpsPackage = NULL;
IXpsOMDocumentSequence *xpsFDS = NULL;
IXpsOMDocumentCollection *fixedDocuments = NULL;
IXpsOMDocument *xpsFD = NULL;
IXpsOMPage *xpsPage = NULL;
IXpsOMPageReferenceCollection *pageRefs = NULL;
IXpsOMPageReference *xpsPageRef = NULL;
// These values are set outside of this code example.
XPS_SIZE pageSize = {width, height};
// Create the package.
hr = xpsFactory->CreatePackage( &xpsPackage );
// Create the URI for the fixed document sequence part and then
// create the fixed document sequence
hr = xpsFactory->CreatePartUri(
L"/FixedDocumentSequence.fdseq", &opcPartUri );
hr = xpsFactory->CreateDocumentSequence( opcPartUri, &xpsFDS );
// Release this URI to reuse the interface pointer.
if (NULL != opcPartUri) {opcPartUri->Release(); opcPartUri = NULL;}
// Create the URI for the document part and then create the document.
hr = xpsFactory->CreatePartUri(
L"/Documents/1/FixedDocument.fdoc", &opcPartUri );
hr = xpsFactory->CreateDocument( opcPartUri, &xpsFD );
// Release this URI to reuse the interface pointer.
if (NULL != opcPartUri) {opcPartUri->Release(); opcPartUri = NULL;}
// Create a blank page.
hr = xpsFactory->CreatePartUri(
L"/Documents/1/Pages/1.fpage", &opcPartUri );
hr = xpsFactory->CreatePage(
&pageSize, // Page size
L"en-US", // Page language
opcPartUri, // Page part name
&xpsPage);
// Release this URI to reuse the interface pointer.
if (NULL != opcPartUri) {opcPartUri->Release(); opcPartUri = NULL;}
// Create a page reference for the page.
hr = xpsFactory->CreatePageReference( &pageSize, &xpsPageRef );
// Add the fixed document sequence to the package.
hr = xpsPackage->SetDocumentSequence( xpsFDS );
// Get the document collection of the fixed document sequence
// and then add the document to the collection.
hr = xpsFDS->GetDocuments( &fixedDocuments );
hr = fixedDocuments->Append( xpsFD );
// Get the page reference collection from the document
// and add the page reference and blank page.
hr = xpsFD->GetPageReferences( &pageRefs );
hr = pageRefs->Append( xpsPageRef );
hr = xpsPageRef->SetPage( xpsPage );
// Release interface pointer
if (NULL != xpsPage) xpsPage->Release();
if (NULL != pageRefs) pageRefs->Release();
if (NULL != fixedDocuments) fixedDocuments->Release();
if (NULL != xpsPageRef) xpsPageRef->Release();
if (NULL != xpsFD) xpsFD->Release();
if (NULL != xpsFDS) xpsFDS->Release();
if (NULL != xpsPackage) xpsPackage->Release();
Meilleures pratiques
Une fois que vous avez utilisé une interface IOpcPartUri pour créer un composant (par exemple, après avoir appelé la méthode CreateDocument dans l’exemple de code), relâchez le pointeur vers cette interface, sauf si vous en avez besoin pour un autre appel.
Rubriques connexes
-
Étapes suivantes
-
Utilisé dans cette page
-
Pour plus d'informations