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
- Schreiben eines XPS OM in eine XPS-Dokumentdatei
- Zugreifen auf die Dokumentsequenz des XPS OM
- Zugreifen auf die CoreProperties des Dokuments
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();