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 :

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.

Next Steps

Naviguer dans le modèle d’objet XPS

Écrire du texte dans un modèle d’objet XPS

Dessiner des graphiques dans un modèle d’objet XPS

Placer des images dans un modèle d’objet XPS

Utilisé dans cette page

IOpcPartUri

IXpsOMObjectFactory

IXpsOMPackage

IXpsOMDocumentSequence

IXpsOMDocumentCollection

IXpsOMDocument

IXpsOMPage

IXpsOMPageReference

IXpsOMPageReferenceCollection

_taille XPS

Pour plus d’informations

Initialiser un modèle d’objet XPS

API d’empaquetage

Informations de référence sur l’API de document XPS

XML Paper Specification