DECLARE_INTERFACE_(IMsoDocExporter, IUnknown) (
// IUnknown
MSOMETHOD(Querylnterface) (THIS_ REFIID refiid, void ** ppvObject) PURE;
MSOMETHOD_(ULONG, AddRef) (THIS) PURE;
MSOMETHOD_(ULONG, Release) (THIS) PURE;
// IMsoDocExporter
MSOMETHOD(HrCreateDoc) (THIS_ const WCHAR * wzDocExFile) PURE;
MSOMETHOD(HrCreateDocDRM) (THIS_ const WCHAR * wzDocExFile, IMsoDrmDocument * pDrmDocument,
DWORD grfdrmFlags) PURE;
MSOMETHOD_(void, SetOutputOption)(MSODOCEXOPTION docexoption, DWORD dwVal) PURE;
MSOMETHOD_(void, GetOutputOption)(MSODOCEXOPTION docexoption, DWORD* pdwVal) PURE;
MSOMETHOD(HrAddPageFromEmf) (THIS_ HENHMETAFILE hemf) PURE;
MSOMETHOD(HrAddExternalHyperlink) (THIS_ LPCWSTR wzLink , const Gdiplus::RectF * prctv) PURE;
MSOMETHOD(HrAddlnternalHyperlink) (THIS_ DWORD iPage, float xtfvTarget, float ytfvTarget,
float dytfTargetPage, const Gdiplus::RectF * prctvSource) PURE;
MSOMETHOD(HrAddDocumentMetadataString) (THIS_ MSODOCEXMETADATA metadataType,
const WCHAR * pwchValue) PURE; MSOMETHOD(HrAddDocumentMetadataDate) (THIS_ MSODOCEXMETADATA metadataType,
const FILETIME * pftLocalTime) PURE; MSOMETHOD(HrAddDocumentCustomMetadataString) (THIS_ const char * pchName,
const WCHAR * pwchValue) PURE;
MSOMETHOD(HrSetDefaultLcid)(THIS DWORD lcid) PURE;
MSOMETHOD(HrAddOutlineNode) (THIS_ int idNodeParent,
const MSODOCEXOUTLINENODE * pNode) PURE;
MSOMETHOD(HrFinalize) (THIS) PURE;
};