zoukankan      html  css  js  c++  java
  • 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
    "));
            return UT_INVALIDFILENAME;
        }
    
        if ( !UT_isRegularFile(szFilename) )
        {
          UT_DEBUGMSG (("PD_Document::readFromFile -- file (%s) is not plain file
    ",szFilename));
          return UT_INVALIDFILENAME;
        }
    
        if (!UT_fileSize(szFilename))
        {
            UT_DEBUGMSG(("PD_Document::readFromFile -- file (%s) is empty
    ",szFilename));
            return UT_IE_BOGUSDOCUMENT;
        }
        
        m_pPieceTable = new pt_PieceTable(this);
        if (!m_pPieceTable)
        {
            UT_DEBUGMSG(("PD_Document::readFromFile -- could not construct piece table
    "));
            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
    "));
            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();    //意味着之前已经读取并且分析了文档结构了
  • 相关阅读:
    Go语言函数之可变参数
    Python 调用系统命令的模块 Subprocess
    python关闭socket端口立即释放
    Python面试题(四)
    Project简介
    Office Visio简介
    [转载]Windows 2012 R2安装SharePoint 2013 手动安装工具软件
    [转载]SharePoint 2013测试环境安装配置指南
    [转载]SharePoint 2013 解决方案中使用JavaScript
    [转载]我们可以用SharePoint做什么
  • 原文地址:https://www.cnblogs.com/songtzu/p/3510130.html
Copyright © 2011-2022 走看看