Поделиться через


Интерфейсы пакетов OM XPS

Интерфейсы пакетов представляют верхний уровень OM XPS, соответствующий файлу документа XPS. Эти интерфейсы содержат методы, сериализующие OM XPS в документ или поток XPS, а также десериализацию пакета XPS для создания OM XPS, позволяющего программе получить доступ к содержимому документа.

Имя интерфейса Логические дочерние интерфейсы Описание
IXpsOMPackage
IXpsOMDocumentSequence
IXpsOMCoreProperties
Полная OM XPS, соответствующая пакету, содержаму документ XPS.
IXpsOMPackageWriter
Никакой
Включает добавочную сериализацию страниц документов в пакет.
IXpsOMCoreProperties
Никакой
Обращается к метаданным документа.

Примеры кода

В примерах кода, приведенных ниже, показано, как некоторые интерфейсы пакетов используются программой. Если не указано иное, все курсивные элементы являются именами параметров.

Чтение документа 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();

использование интерфейса IXpsOMPackageWriter

Навигация по OM XPS

интерфейс IXpsOMDocumentSequence

интерфейс IXpsOMPackage

интерфейс IXpsOMPackageWriter

интерфейс IXpsOMCoreProperties