ICAHtmlPlugin 接口

// {9F5EDF05-1E8E-4efd-B832-6B5F018A78CD}
const GUID IID_ICAHtmlPlugin = 
{ 0x9f5edf05, 0x1e8e, 0x4efd, { 0xb8, 0x32, 0x6b, 0x5f, 0x1, 0x8a, 0x78, 0xcd } };

interface ICAHtmlPlugin: public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Init(ICAHtmlTool* pTool) = 0;
    virtual HRESULT STDMETHODCALLTYPE Exit() = 0;
    virtual HRESULT STDMETHODCALLTYPE get_PluginFlags(long* pnFlags) = 0;
    virtual HRESULT STDMETHODCALLTYPE put_HtmlFlags(long nFlags) = 0;
    virtual HRESULT STDMETHODCALLTYPE Config() = 0;
    virtual HRESULT STDMETHODCALLTYPE OnTag(BSTR bstrTag, BSTR* pbstrResult, VARIANT* pvAdditionalResourceURLs) = 0;
    virtual HRESULT STDMETHODCALLTYPE OnText(BSTR bstrText, BSTR* pbstrResult) = 0;
    virtual HRESULT STDMETHODCALLTYPE OnProgress(long nProgress) = 0;
    virtual HRESULT STDMETHODCALLTYPE OnBeforeProcessNode(ICANode* pNode) = 0;
    virtual HRESULT STDMETHODCALLTYPE OnAfterProcessNode() = 0;
    virtual HRESULT STDMETHODCALLTYPE OnBeforeProcessHtml(BSTR bstrURL, BSTR bstrHtml, BSTR* pbstrResult) = 0;
    virtual HRESULT STDMETHODCALLTYPE OnAfterProcessHtml(BSTR bstrHtml, BSTR* pbstrResult) = 0;
    virtual HRESULT STDMETHODCALLTYPE get_Order(long* pnOrder) = 0;
};
 

Init(ICAHtmlTool* pTool)

说明

在处理HTML之前初始化插件。

参数

  • ICAHtmlTool:[in],ICAHtmlTool对象。插件可以使用这个对象,用来从HTML Tag里面获得一些信息。具体请查看ICAHtmlTool接口。

返回

  • S_OK:如果插件初始化成功,应该返回S_OK。
  • E_FAIL:如果插件初始化成功,应该返回E_FAIL。

Exit()

说明

处理完全部HTML,CyberArticle即将卸载HTML插件。

参数

返回

如果插件初始化成功,应该返回S_OK。否则,应该返回E_FAIL。

get_PluginFlags(long* pnFlags)

说明

CyberArticle调用该方法,来获得HTML插件的一些信息。

参数

  • pnFlags:[out]。可能的值:
    HPF_PROCESS_HTML_TOOL
    0x00000001
    该插件可以用于文章批量处理功能。
    HPF_CONFIG
    0x00010000
    该插件支持用户进行设置

返回

插件应该返回S_OK。
 

put_HtmlFlags(long nFlags)

说明

CyberArticle调用该方法,用来向HTML设置一些信息。

参数

  • nFlags:保留,HTML处理插件应该忽略该参数。

返回

插件应该返回S_OK。

Config()

说明

Cyberarticle会调用该方法,以便用户对插件进行设置。

参数

返回

插件应该返回S_OK。

OnTag(BSTR bstrTag, BSTR* pbstrResult, VARIANT* pvAdditionalResourceURLs)

说明

CyberArticle处理到一个HTML Tag。

参数

  • bstrTag:[in]。HTML Tag内容。通常应该是<a href="abc.html">这种形式。
  • pbstrResult:[out]。插件处理之后的HTML Tag内容。
  • pvAdditionalResourceURLs:[out]。这是一个安全数组。数组元素是VARIANT。插件处理该HTML Tag之后,认为CyberArticle应该同时保存某些资源。例如插件在处理<img src="http://www.wizissoft.com/images/logo.gif">之后,认为CyberArticle应该同时保存http://www.wizissoft.com/images/logo.gif,才可以完整保存网页。那么,就需要通过该参数,返回图片的URL(或者本地的文件名)。

    在WizHelper.h文件中,提供了一个辅助函数WizStringArrayToVariant,用来将一个CString数组,转换成一个VARIANT。下面是一个例子:

    #include "C:/Program Files/Wizissoft/CyberArticle/developers/interface/include/WizHelper.h"
    
    virtual HRESULT STDMETHODCALLTYPE CProcessImagePlugin::OnTag(BSTR bstrTag, BSTR* pbstrResult, VARIANT* pvAdditionalResourceURLs)
    {
        ...
        CWizStdStringArray arrayFiles; arrayFiles.push_back(_T("e:\\1.gif")); arrayFiles.push_back(_T("http://www.wizissoft.com/images/logo.gif")); // CComVariant vFiles; WizStringArrayToVariant(arrayFiles, vFiles); // VariantCopy(pvAdditionalResourceURLs, &vFiles); // return S_OK; }

返回

如果插件处理了HTML内容,并且通过pbstrResult返回了处理后的结果,插件应该返回S_OK。否则,应该返回S_FALSE。

OnText(BSTR bstrText, BSTR* pbstrResult)

说明

CyberArticle处理到HTML里面的文字。

参数

  • bstrText:[in]。处理的文字。
  • pbstrResult:[out]。处理后的结果。

返回

如果插件处理了HTML内容,并且通过pbstrResult返回了处理后的结果,插件应该返回S_OK。否则,应该返回S_FALSE。

OnProgress(long nProgress) 

说明

CyberArticle处理进度。

参数

  • nProgress:[in],当前进度。总进度是100。

返回

插件应该返回S_OK。

OnBeforeProcessNode(ICANode* pNode)

说明

CyberArticle即将处理一个文章。

参数

  • pNode:[in]。进行处理的文章。

返回

插件应该返回S_OK。

OnAfterProcessNode()

说明

CyberArticle已经完成处理节点

参数

返回

插件应该返回S_OK。

OnBeforeProcessHtml(BSTR bstrURL, BSTR bstrHtml, BSTR* pbstrResult)

说明

CyberArticle即将处理某一个HTML文件。

参数

  • bstrURL:[in]。即将处理的文章URL。
  • bstrHtml:[in]。即将处理的文章内容(HTML格式)。
  • pbstrResult:[out]。如果插件处理了该文章内容,通过这个参数返回处理后的结果。

返回

如果插件处理了HTML内容,并且通过pbstrResult返回了处理后的结果,插件应该返回S_OK。否则,应该返回S_FALSE。

OnAfterProcessHtml(BSTR bstrHtml, BSTR* pbstrResult)

说明

CyberArticle已经完成处理一个HTML文件。

参数

  • bstrHtml:[in]。即将处理的文章内容(HTML格式)。
  • pbstrResult:[out]。如果插件处理了该文章内容,通过这个参数返回处理后的结果。
  • 返回

    如果插件处理了HTML内容,并且通过pbstrResult返回了处理后的结果,插件应该返回S_OK。否则,应该返回S_FALSE。

    get_Order(long* pnOrder)

    说明

    CyberArticle通过插件返回的值,来给插件排序,判断调用HTML插件的顺序。

    参数

    • pnOrder:[out]。

    返回

    插件应该返回S_OK。
     

    注意

    HTML插件有两个用途:
     
    1:保存网页的时候,用来处理HTML。在这种情况下,接口中所有的方法都会被调用。
    2:批量文章处理的时候。插件必须通过get_PluginFlags返回HPF_PROCESS_HTML_TOOL,才会被调用。接口中只有Init,Exit,OnBeforeProcessNode,OnAfterProcessNode,OnBeforeProcessHtml,OnAfterProcessHtml这几个方法被调用。