abiword的属性/样式初始化

本文深入解析了文档属性与样式的初始化流程,包括PP_AttrProp类的作用、pp_TableAttrProp类的数组特性、pt_VarSet类的文档数据存储方式以及初始化流程。同时,详细阐述了在输入文字时如何处理属性与样式,以及改变系统字体样式的具体步骤。通过案例分析,读者可以清晰理解文档编辑过程中的关键细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

属性/样式初始化【转】

一、PP_AttrProp类
   1、类功能说明,代表了一个相同类型的属性/样式集合
   PP_AttrProp captures the complete set of XML and CSS
   Attributes/Properties for a piece of the document.
   These are generally created by the file-reader.  Attributes
   represent all of the attribute/value pairs in the XML with
   the exception of the PT_PROPS_ATTRIBUTE_NAME attribute.
   The value of the this attribute is parsed into CSS properties.
   PP_AttrProp just provides a pair of association lists
   (one for attributes and one for properties), it does not
   know the meaning of any of them.
二、pp_TableAttrProp类
   1、代表一个数组,数组中的元素类型是PP_AttrProp对象的指针。

三、pt_VarSet类
   1、存储文档数据
      UT_GrowBuf         m_buffer[2];--存储字符、图片等数据
      pp_TableAttrProp  m_tableAttrProp[2];--存储属性/样式
      0代表读取的数据,1代表编辑时插入的数据

四、初始化流程
   1、pt_VarSet::_finishConstruction函数初始化m_tableAttrProp数组,分别存入索引值为0的PP_AttrProp对象
   2、pt_PieceTable::_loadBuiltinStyles函数构建不同名字的属性/样式,将数据存入m_tableAttrProp[0]中,
      索引值从1开始
   3、根据PP_AttrProp的实例的索引构建PD_Style对象
   3、在PD_Document::setAttrProp函数初始化文档的属性/样式

五、输入文字时属性/样式处理流程
   1、pp_Author对象的初始化
   2、在pt_PieceTable::createAndSendDocPropCR函数中,初始化文档的样式,创建PP_AttrProp实例
   3、在PD_Document::addAuthorAttributeIfBlank函数中,初始化一个静态的PP_AttrProp实例(0x80000001),设      置属性是PT_AUTHOR_NAME宏。可以替换为:author 字符串。
   4、在pt_PieceTable::_insertFmtMarkFragWithNotify函数中,构建一个具有author 属性的PP_AttrProp实例        (0x80000002),如果是插入后面(如第二个字符),前面四步不在执行。
   5、在pt_PieceTable::_realInsertSpan中,可以根据pf_Frag_FmtMark实例获取PT_AttrPropIndex的值,根据该       值可以获取PP_AttrProp实例,插入pf_Frag_Text对象实例。如果是插入后面(如第二个字符),该                 pf_Frag_Text对象的属性/样式继承他前面的对象样式
   6、在pf_Frag_Text构造函数中,调用lookupProperties函数,设置字体的样式。
      6.1、display、bgcolor样式的设置。在PP_lookupProperty函数中,查找系统定义的static PP_Property     _props[]数组中该样式的值。返回PP_Property指针对象。
      
      6.2、根据pf_Frag对象实例的pSpanAttrProp查找样式的值,如果找不到继续
      6.3、根据fl_BlockLayout对象实例的pBlockAttrProp查找样式的值,如果找不到继续
      6.4、获取Normal样式对象PD_Style查找样式的值,如果找不到继续
      6.5、获取文档对象的PP_AttrProp实例查找样式的值,如果找不到继续
      6.6、继承PP_Property对象的值
   7、FL_DocLayout::findFont设置字体,查找样式的方式参考第6步。
   
六、改变系统的字体样式
   1、当改变当前编辑的字体样式时(比如:字体的大小),系统会按第五步的前5步添加pf_Frag_FmtMark对象

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

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值