다음을 통해 공유


IXpsOMPageReference 인터페이스 작업

이 항목에서는 XPS OM에서 페이지 참조에 대한 액세스를 제공하는 인터페이스를 사용하는 방법을 설명합니다.

인터페이스 이름 논리적 자식 인터페이스 설명
IXpsOMPageReference
IXpsOMPage
문서 페이지의 콘텐츠를 가상화합니다.
페이지 참조에는 페이지에 대한 기본 정보, 일부 페이지 속성 및 페이지 내용에 대한 링크가 포함됩니다. 페이지 콘텐츠를 구성하는 IXpsOMPage 인터페이스는 IXpsOMPageReference::GetPage 메서드에 의해 반환됩니다.
IXpsOMNameCollection
없음
하이퍼링크 대상인 페이지 항목의 목록을 포함합니다. 목록은 IXpsOMPageReference::CollectLinkTargets 메서드에 의해 반환됩니다.
IXpsOMPartResources
없음
페이지와 연결된 부분 기반 리소스 목록을 포함합니다. 이 목록은 IXpsOMPageReference::CollectPartResources 메서드에 의해 반환됩니다.

코드 예제

다음 코드 예제에서는 프로그램에서 페이지 참조 인터페이스를 사용하는 방법을 보여 줍니다.

페이지 콘텐츠 가져오기

다음 코드 예제에서는 페이지 내용을 구성하는 IXpsOMPage 인터페이스에 대한 포인터를 가져옵니다. 페이지가 XPS OM에 로드되지 않은 경우, IXpsOMObjectFactory::CreatePackageFromFile을 호출하여 XPS OM이 초기화될 때와 마찬가지로 IXpsOMPageReference::GetPage를 호출하면 XPS OM에 페이지가 로드됩니다.

    {
    HRESULT        hr = S_OK;
    IXpsOMPage     *page = NULL;

    // pageRef contains the current page reference
    // and is passed in as a parameter

    // get the page content of this page reference
    hr = pageRef->GetPage (&page);

다음 코드 예제에서는 하이퍼링크 대상인 페이지 항목 목록을 포함하는 IXpsOMNameCollection 인터페이스에 대한 포인터를 가져옵니다. 페이지가 XPS OM에 로드되지 않은 경우 PageContent.LinkTargets 태그에서 하이퍼링크 대상 목록을 읽습니다. 페이지가 로드된 경우 CollectLinkTargets는 페이지의 각 요소를 검사 IsHyperlinkTarget 특성이 TRUE인 요소 목록을 반환합니다.

    HRESULT                         hr = S_OK;
    IXpsOMPage                      *page = NULL;
    IXpsOMNameCollection            *linkTargets = NULL;

    UINT32 numTargets = 0;
    UINT32 thisTarget = 0;
    LPWSTR thisTargetName = NULL;

    // pageRef contains the current page reference 

    // if the page hasn't been loaded yet, for example, if the XPS OM 
    //  was loaded from an XPS document, CollectLinkTargets obtains the
    //  list of link targets from the <PageContent.LinkTargets> markup
    hr = pageRef->CollectLinkTargets(&linkTargets);

    // get the page content of this page reference
    hr = pageRef->GetPage (&page);

    // after the page object has been loaded and calling GetPage or 
    //  by creating a page in the XPS OM, CollectLinkTargets will now check
    //  each of the page elements to return the list so this call to
    //  CollectLinkTargets might take longer to return than the previous
    //  call above if the XPS OM was created from a file
    linkTargets->Release(); // release previous collection
    hr = pageRef->CollectLinkTargets(&linkTargets);
    
    // walk the list of link targets returned
    hr = linkTargets->GetCount( &numTargets );
    thisTarget = 0;
    while (thisTarget < numTargets) {
        hr = linkTargets->GetAt (thisTarget, &thisTargetName);
        printf ("%s\n", thisTargetName);
        // release the target string returned to prevent memory leaks
        CoTaskMemFree (thisTargetName);
        // get next target in list
        thisTarget++;
    }
    // release page and the link target collection
    page->Release();
    linkTargets->Release();

이 페이지와 연결된 파트 리소스 가져오기

다음 코드 예제에서는이 페이지에서 사용 되는 다른 리소스의 목록을 가져옵니다.

    HRESULT                                   hr = S_OK;
    IXpsOMPartResources                       *resources;

    IXpsOMColorProfileResourceCollection      *colorProfileResources;
    IXpsOMFontResourceCollection              *fontResources;
    IXpsOMImageResourceCollection             *imageResources;
    IXpsOMRemoteDictionaryResourceCollection  *dictionaryResources; 

    // pageRef contains the current page reference 
    hr = pageRef->CollectPartResources ( &resources );

    // Get pointers to each type of resource
    hr = resources->GetColorProfileResources( &colorProfileResources );
    hr = resources->GetFontResources( &fontResources );
    hr = resources->GetImageResources( &imageResources );
    hr = resources->GetRemoteDictionaryResources( &dictionaryResources );

IXpsOMNameCollection

IXpsOMPage

IXpsOMPageReference

IXpsOMPartResources

XML Paper Specification