Partager via


IXpsOMObjectFactory::CreateFontResource method

Creates an IXpsOMFontResource interface, which provides an IStream interface to the font resource.

Syntax

HRESULT CreateFontResource(
  [in]          IStream            *acquiredStream,
  [in]          XPS_FONT_EMBEDDING fontEmbedding,
  [in]          IOpcPartUri        *partUri,
  [in]          BOOL               isObfSourceStream,
  [out, retval] IXpsOMFontResource **fontResource
);

Parameters

  • acquiredStream [in]
    The read-only IStream interface to be associated with this font resource. This parameter must not be NULL.

    Important  Treat this stream as a Single-Threaded Apartment (STA) object; do not re-enter it.

     

    Caution  This stream is not to be obfuscated.

     

  • fontEmbedding [in]
    The XPS_FONT_EMBEDDING value that specifies the stream's embedding option.

  • partUri [in]
    The IOpcPartUri interface that contains the part name to be assigned to this resource. This parameter must not be NULL.

  • isObfSourceStream [in]
    A Boolean value that indicates whether the stream referenced by acquiredStream is obfuscated.

    Value Meaning
    TRUE

    The stream referenced by acquiredStream is obfuscated.

    FALSE

    The stream referenced by acquiredStream is not obfuscated.

     

  • fontResource [out, retval]
    A pointer to the new IXpsOMFontResource interface.

Return value

The method returns an HRESULT. Possible values include, but are not limited to, those in the table that follows. For information about XPS document API return values that are not listed in this table, see XPS Document Errors.

Return code Description
S_OK

The method succeeded.

E_INVALIDARG

One of the following errors has occurred:

E_POINTER

acquiredStream, partUri, or fontResource is NULL.

 

Remarks

The value of isObfSourceStream describes the state of the acquiredStream-referenced stream at the time the font resource is created. All subsequent calls to GetStream or SetContent will operate on unobfuscated versions of IStream.

An error is returned if isObfSourceStream is set to TRUE and fontEmbedding is set to XPS_FONT_EMBEDDING_NORMAL, or if the name referenced by partUri does not conform to the syntax for obfuscated streams.

The code example that follows illustrates how this method is used to create a new interface.

IXpsOMFontResource    *newInterface;
IOpcPartUri           *partUri;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    // The partUriString and acquiredStream variables 
    //   are defined outside of this example.
    hr = xpsFactory->CreatePartUri(partUriString, &partUri);
    if (SUCCEEDED(hr))
    {
        hr = xpsFactory->CreateFontResource (
            acquiredStream, 
            XPS_FONT_EMBEDDING_NORMAL,    // normal
            partUri, 
            FALSE,                        // not obfuscated
            &newInterface);
        if (SUCCEEDED(hr))
        {
            // use newInterface

            newInterface->Release();
        }
        partUri->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}

Requirements

Minimum supported client

Windows 7, Windows Vista with SP2 and Platform Update for Windows Vista [desktop apps | Windows Store apps]

Minimum supported server

Windows Server 2008 R2, Windows Server 2008 with SP2 and Platform Update for Windows Server 2008 [desktop apps | Windows Store apps]

Header

Xpsobjectmodel.h

IDL

XpsObjectModel.idl

See also

IXpsOMObjectFactory

IOpcPartUri

IXpsOMFontResource

XPS_FONT_EMBEDDING

XPS Document Errors

XML Paper Specification