Créer un modèle d’objet XPS vide
Cette rubrique explique comment créer un modèle OM XPS vide. Il présente les exemples de code qui illustrent l’utilisation d’un modèle d’objet XPS pour créer la structure de document d’un document XPS qui comporte une page vierge.
Pour être enregistré en tant que document XPS, le modèle d’objet XPS requiert au moins les composants suivants :
- IXpsOMPackage décrivant le package de documents XPS
- IXpsOMDocumentSequence qui contient le Framework du contenu du package
- IXpsOMDocument qui contient l’infrastructure d’un document dans le package
- IXpsOMPageReference qui contient la collection de pages dans le document
- IXpsOMPage qui contient une page vierge
Lorsque ces interfaces sont utilisées, le modèle d’objet XPS contient un document qui contient une page vierge. Pour créer ce document dans un modèle d’objet XPS, le programme doit d’abord créer les composants individuels, puis les lier ensemble.
Avant d’utiliser les exemples de code suivants, lisez l’exclusion de responsabilité dans les tâches de programmation de document XPS courantes.
Exemples de code
L’exemple de code suivant suppose que l’initialisation, décrite dans initialiser un modèle d’objet 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), libérez le pointeur vers cette interface, sauf si vous en avez besoin pour un autre appel.
Rubriques connexes
-
Next Steps
-
Utilisé dans cette page
-
Pour plus d’informations