Freigeben über


XPS OM-Paketschnittstellen

Die Paketschnittstellen stellen die oberste Ebene des XPS-OM dar, was einer XPS-Dokumentdatei entspricht. Diese Schnittstellen enthalten Methoden, die eine XPS OM in ein XPS-Dokument oder einen XPS-Stream serialisieren und ein XPS-Paket deserialisieren, um ein XPS-OM zu erstellen, mit dem ein Programm auf den Inhalt eines Dokuments zugreifen kann.

Schnittstellenname Logische untergeordnete Schnittstellen Beschreibung
IXpsOMPackage
IXpsOMDocumentSequence
IXpsOMCoreProperties
Das vollständige XPS-OM, das dem Paket entspricht, das das XPS-Dokument enthält.
IXpsOMPackageWriter
Keine
Ermöglicht die inkrementelle Serialisierung von Dokumentseiten in ein Paket.
IXpsOMCoreProperties
Keine
Greift auf die Dokumentmetadaten zu.

Codebeispiele

Die folgenden Codebeispiele veranschaulichen, wie einige der Paketschnittstellen von einem Programm verwendet werden. Sofern nicht anders angegeben, sind alle kursivisierten Elemente Parameternamen.

Lesen eines XPS-Dokuments in eine XPS-OM

Aus einem vorhandenen XPS-Dokument, dessen Dateiname in xpsDocumentFilename gespeichert ist, wird in diesem Codebeispiel ein XPS-OM erstellt, auf das von xpsPackage verwiesen wird.

    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.

Schreiben eines XPS OM in eine XPS-Dokumentdatei

Im folgenden Codebeispiel wird das XPS-OM geschrieben, auf das von xpsPackage verwiesen wird. Im Beispiel wird ein XPS-Dokument in der Datei erstellt, dessen Name in fileName gespeichert ist.

    HRESULT hr = S_OK;

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

Zugreifen auf die Dokumentsequenz des XPS OM

Im folgenden Codebeispiel wird ein Zeiger auf die IXpsOMDocumentSequence-Schnittstelle abgerufen, die die Dokumentsequenz des XPS-OM enthält, das durch xpsPackage dargestellt wird.

    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);

Zugreifen auf die CoreProperties des Dokuments

Im folgenden Codebeispiel wird ein Zeiger auf die IXpsOMCoreProperties-Schnittstelle abgerufen, sodass das Programm auf den Inhalt des CoreProperties-Teils zugreifen kann. Im Beispiel wird davon ausgegangen, dass das Dokument in ein XPS-OM gelesen wurde, das durch xpsPackage dargestellt wird.

    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();

Verwenden der IXpsOMPackageWriter-Schnittstelle

Navigieren im XPS-OM

IXpsOMDocumentSequence-Schnittstelle

IXpsOMPackage-Schnittstelle

IXpsOMPackageWriter-Schnittstelle

IXpsOMCoreProperties-Schnittstelle