Interfaces de paquete DE XPS OM
Las interfaces de paquete representan el nivel superior del OM XPS, que corresponde a un archivo de documento XPS. Estas interfaces contienen métodos que serializan un OM XPS en un documento o secuencia XPS y deserializan un paquete XPS para crear un OM XPS que permita a un programa acceder al contenido de un documento.
Nombre de la interfaz | Interfaces secundarias lógicas | Descripción |
---|---|---|
IXpsOMPackage |
IXpsOMDocumentSequence IXpsOMCoreProperties |
El OM XPS completo que corresponde al paquete que contiene el documento XPS. |
IXpsOMPackageWriter |
None |
Habilita la serialización incremental de páginas de documentos en un paquete. |
IXpsOMCoreProperties |
None |
Obtiene acceso a los metadatos del documento. |
Ejemplos de código
Los ejemplos de código siguientes muestran cómo un programa usa algunas de las interfaces de paquete. A menos que se indique lo contrario, todos los elementos en cursiva son nombres de parámetro.
- Leer un documento XPS en un XPS OM
- Escribir un OM XPS en un archivo de documento XPS
- Obtener acceso a la secuencia de documentos del OM XPS
- Acceso a CoreProperties del documento
Leer un documento XPS en un XPS OM
A partir de un documento XPS existente cuyo nombre de archivo se almacena en xpsDocumentFilename, este ejemplo de código crea un OM XPS al que hace referencia 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.
Escribir un OM XPS en un archivo de documento XPS
En el ejemplo de código siguiente se escribe el OM XPS al que hace referencia xpsPackage. En el ejemplo se crea un documento XPS en el archivo cuyo nombre se almacena en fileName.
HRESULT hr = S_OK;
hr = xpsPackage->WriteToFile(
xpsDocumentFilename,
NULL, // LPSECURITY_ATTRIBUTES
FILE_ATTRIBUTE_NORMAL,
FALSE); // optimizeMarkupSize
Obtener acceso a la secuencia de documentos del OM XPS
En el ejemplo de código siguiente se obtiene un puntero a la interfaz IXpsOMDocumentSequence , que contiene la secuencia de documentos del OM XPS representado por 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);
Acceso a CoreProperties del documento
El siguiente es el ejemplo de código que obtiene un puntero a la interfaz IXpsOMCoreProperties , lo que permite al programa acceder al contenido de la parte CoreProperties. En el ejemplo, se supone que el documento se ha leído en un OM XPS representado por 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();