Interfaces du package OM XPS

Les interfaces de package représentent le niveau supérieur du modèle d’objet XPS, qui correspond à un fichier de document XPS. Ces interfaces contiennent des méthodes qui sérialisent un modèle d’objet XPS dans un document ou un flux XPS, et désérialisent un package XPS pour créer un modèle d’objet XPS qui permet à un programme d’accéder au contenu d’un document.

Nom de l’interface Interfaces enfants logiques Description
IXpsOMPackage
IXpsOMDocumentSequence
IXpsOMCoreProperties
Modèle d’objet XPS complet qui correspond au package qui contient le document XPS.
IXpsOMPackageWriter
None
Active la sérialisation incrémentielle des pages de document dans un package.
IXpsOMCoreProperties
None
Accède aux métadonnées du document.

Exemples de code

Les exemples de code qui suivent illustrent la façon dont certaines interfaces de package sont utilisées par un programme. Sauf indication contraire, tous les éléments en italique sont des noms de paramètres.

Lire un document XPS dans un modèle d’objet XPS

À partir d’un document XPS existant dont le nom de fichier est stocké dans xpsDocumentFilename, cet exemple de code crée un modèle d’objet XPS référencé par xpsPackage.

    HRESULT                 hr = S_OK;
    IXpsOMPackage           *xpsPackage;

    hr = xpsFactory->CreatePackageFromFile(
        xpsDocumentFilename,
        FALSE,
        &xpsPackage);

    // xpsPackage now contains a pointer to the IXpsOMPackage
    // object that has been populated with the contents
    // of the XPS document in xpsDocumentFilename.

Écrire un modèle OM XPS dans un fichier de document XPS

L’exemple de code suivant écrit le modèle d’objet XPS qui est référencé par xpsPackage. L’exemple crée un document XPS dans le fichier dont le nom est stocké dans filename.

    HRESULT hr = S_OK;

    hr = xpsPackage->WriteToFile(
        xpsDocumentFilename,
        NULL,                    // LPSECURITY_ATTRIBUTES
        FILE_ATTRIBUTE_NORMAL,
        FALSE);                  // optimizeMarkupSize

Accéder à la séquence de documents du modèle d’objet XPS

L’exemple de code suivant obtient un pointeur vers l’interface IXpsOMDocumentSequence , qui contient la séquence de documents du modèle d’objet XPS qui est représenté par xpsPackage.

    HRESULT                         hr = S_OK;
    IXpsOMDocumentSequence          *docSeq;
    IXpsOMDocumentCollection        *docs;

    // get the fixed document sequence of the package
    hr = xpsPackage->GetDocumentSequence(&docSeq);

    // get the collection of fixed documents in 
    //  the fixed document sequence
    hr = docSeq->GetDocuments(&docs);

Accéder au CoreProperties du document

L’exemple de code suivant obtient un pointeur vers l’interface IXpsOMCoreProperties , ce qui permet au programme d’accéder au contenu de la partie CoreProperties. Dans l’exemple, le document est supposé avoir été lu dans un modèle d’objet XPS qui est représenté par xpsPackage.

    HRESULT                         hr = S_OK;
    IXpsOMCoreProperties            *coreProps;
    LPWSTR                          title;

    // get the fixed document sequence of the package
    hr = xpsPackage->GetCoreProperties(&coreProps);

    // get the title property 
    hr = coreProps->GetTitle(&title);

    // do something with the title property here...

    // free the string when finished with it
    CoTaskMemFree ( title );
    coreProps->Release();

Utilisation de l’interface IXpsOMPackageWriter

Naviguer dans le modèle d’objet XPS

Interface IXpsOMDocumentSequence

Interface IXpsOMPackage

Interface IXpsOMPackageWriter

Interface IXpsOMCoreProperties