IXpsOMObjectFactory::CreateFontResource method (xpsobjectmodel.h)

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

[in] acquiredStream

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.
 

[in] fontEmbedding

The XPS_FONT_EMBEDDING value that specifies the stream's embedding option.

[in] partUri

The IOpcPartUri interface that contains the part name to be assigned to this resource. This parameter must not be NULL.

[in] isObfSourceStream

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.

[out, retval] fontResource

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

Requirement Value
Minimum supported client Windows 7, Windows Vista with SP2 and Platform Update for Windows Vista [desktop apps | UWP apps]
Minimum supported server Windows Server 2008 R2, Windows Server 2008 with SP2 and Platform Update for Windows Server 2008 [desktop apps | UWP apps]
Target Platform Windows
Header xpsobjectmodel.h

See also

IOpcPartUri

IXpsOMFontResource

IXpsOMObjectFactory

XML Paper Specification

XPS Document Errors

XPS_FONT_EMBEDDING