abiword架构分析笔记

源码版本:2.4.6

打开文件文件操作:

响应函数:UT_Error AP_Frame::loadDocument(const char * szFilename, int ieft, bool createNew)

加载操作:loadDocument::errorCode =  _loadDocument(szFilename, static_cast<IEFileType>(ieft), createNew);

 

打开word文件代码段

UT_Error PD_Document::readFromFile(const char * szFilename, int ieft,
const char * impProps)

 

 

UT_Error PD_Document::readFromFile(const char * szFilename, int ieft,
                                   const char * impProps)
{
    if (!szFilename || !*szFilename)
    {
        UT_DEBUGMSG(("PD_Document::readFromFile -- invalid filename\n"));
        return UT_INVALIDFILENAME;
    }

    if ( !UT_isRegularFile(szFilename) )
    {
      UT_DEBUGMSG (("PD_Document::readFromFile -- file (%s) is not plain file\n",szFilename));
      return UT_INVALIDFILENAME;
    }

    if (!UT_fileSize(szFilename))
    {
        UT_DEBUGMSG(("PD_Document::readFromFile -- file (%s) is empty\n",szFilename));
        return UT_IE_BOGUSDOCUMENT;
    }
    
    m_pPieceTable = new pt_PieceTable(this);
    if (!m_pPieceTable)
    {
        UT_DEBUGMSG(("PD_Document::readFromFile -- could not construct piece table\n"));
        return UT_NOPIECETABLE;
    }

    m_pPieceTable->setPieceTableState(PTS_Loading);

    {
        UT_String template_list[6];
        
        buildTemplateList (template_list, "normal.awt");

        bool success = false;
        for (UT_uint32 i = 0; i < 6 && !success; i++)
            success = (importStyles(template_list[i].c_str(), ieft, true) == UT_OK);

        // don't worry if this fails
    }

    IE_Imp * pie = NULL;
    UT_Error errorCode;

    errorCode = IE_Imp::constructImporter(this, szFilename, static_cast<IEFileType>(ieft), &pie, &m_lastOpenedType);
    if (errorCode)
    {
        UT_DEBUGMSG(("PD_Document::readFromFile -- could not construct importer\n"));
        return errorCode;
    }
    if (impProps && strlen(impProps))
        pie->setProps (impProps);

    _syncFileTypes(false);

    // set standard document properties and attributes, such as dtd, lang,
    // dom-dir, etc., which the importer can then overwite
    // this also initializes m_indexAP
    m_indexAP = 0xffffffff;
    setAttrProp(NULL);

    errorCode = pie->importFile(szFilename);
    delete pie;
        repairDoc();    //意味着之前已经读取并且分析了文档结构了

 

转载于:https://www.cnblogs.com/songtzu/p/3510130.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值