Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Интерфейсы пакетов представляют верхний уровень OM XPS, соответствующий файлу документа XPS. Эти интерфейсы содержат методы, сериализующие OM XPS в документ или поток XPS, а также десериализацию пакета XPS для создания OM XPS, позволяющего программе получить доступ к содержимому документа.
Имя интерфейса | Логические дочерние интерфейсы | Описание |
---|---|---|
IXpsOMPackage |
IXpsOMDocumentSequence IXpsOMCoreProperties |
Полная OM XPS, соответствующая пакету, содержаму документ XPS. |
IXpsOMPackageWriter |
Никакой |
Включает добавочную сериализацию страниц документов в пакет. |
IXpsOMCoreProperties |
Никакой |
Обращается к метаданным документа. |
Примеры кода
В примерах кода, приведенных ниже, показано, как некоторые интерфейсы пакетов используются программой. Если не указано иное, все курсивные элементы являются именами параметров.
- чтение документа XPS в OM XPS
- запись XPS OM в файл документов XPS
- Доступ к последовательности документов OM XPS
- Доступ к coreProperties документа
Чтение документа XPS в OM XPS
Из существующего документа XPS, имя файла которого хранится в xpsDocumentFilename, этот пример кода создает OM XPS, на который ссылается 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.
Запись OM XPS в файл документа XPS
В следующем примере кода записывается OM XPS, на который ссылается xpsPackage. В примере создается документ XPS в файле, имя которого хранится в fileName.
HRESULT hr = S_OK;
hr = xpsPackage->WriteToFile(
xpsDocumentFilename,
NULL, // LPSECURITY_ATTRIBUTES
FILE_ATTRIBUTE_NORMAL,
FALSE); // optimizeMarkupSize
Доступ к последовательности документов в OM XPS
В следующем примере кода получается указатель на интерфейс IXpsOMDocumentSequence, содержащий последовательность документов OM XPS, представленную 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);
Доступ к CoreProperties документа
Ниже приведен пример кода, который получает указатель на интерфейс IXpsOMCoreProperties, что позволяет программе получить доступ к содержимому части CoreProperties. В примере предполагается, что документ считывается в OM XPS, представленный 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();