这篇文档需要结合着Word2003RTFSpec看
下面的内容是我直接读openoffice生成的rtf文件分析他最简单的control word
与Windows下的RTF一样
先是font table和color table
接着是一段可有可无的info
然后是页面信息
=====page=====
{/*/pgdsctbl
{/pgdsc0/pgwsxn12240/pghsxn15840/marglsxn1800/margrsxn1800/margtsxn1440/margbsxn1440 Standard;}}
/pgdsctbl 就当是page table了
/pgdscN 第N种页面样式,但是即使是多页也不会有多种样式,所有页保持同一种样式,当然你要是愿意多写几个然后不用也可以
/pgwsxnN 页宽为N twips
/pghsxnN 页高为N twips
/marglsxnN /margrsxnN /margtsxnN /margbsxnN这些不用多说,设置边缘宽度
最后的Standard应该说这个页是标准页,我去了他还能显示,不过还是留着吧
{/*/pgdscno0}这个control word就是表示新的一页开始了.
=====frame=====
在rtf中有很多东西可以当容器,这里我挑了"框",也就是frame contents
/pard/plain 先刷新一下
/abswN/abshN/posyN/posxN 再定义frame的大小和位置
/frmtxtbrlv 表示frame中的文字是竖排vertical的(这些在Word2003RTFSpec上都有)
如果你要给你的frame边框那么就要加
{/*/flycntnt
{/*/brdrt/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28
{/*/brdrl/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28
{/*/brdrb/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28
{/*/brdrr/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28}
开头的/flycntnt我猜他表示给frame一些属性(也许只是给一些边框的属性)
四行分别是上左下右边框的属性,属性中的内容我查不到也懒的试了,如此写便可以了.
唯一碰到的需要知道的是/brdlncolN
/brdlncolN是边框的颜色,N是你color table中颜色的号
/brspN Space in twips between borders and the paragraph
接着就可以写字了{/f1/fs24 ...}
结束的时候要/par
换行的时候也要/par,如果后面还有内容,那这个/par就代表回车了,没有内容的话就是frame结束的意思
例子:
{/rtf1/ansi/
{/fonttbl{/f0/froman/fprq2/fcharset0 Nimbus Roman No9 L;}{/f1/froman/fprq2/fcharset134 Nimbus Roman No9 L;}{/f2/froman/fprq2/fcharset134 Nimbus Roman No9 L;}{/f3/fnil/fprq0/fcharset0 Luxi Sans;}}
{/colortbl;/red0/green0/blue0;/red128/green128/blue128;}
{/*/pgdsctbl
{/pgdsc0/pgwsxn12240/pghsxn15840/marglsxn1800/margrsxn1800/margtsxn1440/margbsxn1440 Standard;}}
/pard/plain
/absw1000/absh3053/posy2372/posx3000
/frmtxtbrlv
{/*/flycntnt
{/*/brdrt/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28
{/*/brdrl/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28
{/*/brdrb/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28
{/*/brdrr/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28}
{/f1/fs24 #######################}/par
/pard/plain
/absw3000/absh6053/posy100/posx100
{/f1/fs24 $$$$$$$$$$$$$$$$$$$$$}
/par}
=====image=====
OpenOffice将插入的图片都按照wmf格式内嵌到文件中,当然你这里插JPEG也可以
{/*/flyopaque/flymaincnt2}
这两个controlword控制图片环绕方式
/flyopaque 置于背景
/flymaincntN N 0:无; 2:贯穿; 4:平行; 5:最佳; 8:之前; 10:之后(这些属性都是环绕中的预置)
例子:
{/rtf1/ansi
{/fonttbl{/f0/froman/fprq2/fcharset0 Nimbus Roman No9 L;}{/f1/froman/fprq2/fcharset0 Nimbus Roman No9 L;}{/f2/froman/fprq2/fcharset0 Nimbus Roman No9 L;}{/f3/fnil/fprq2/fcharset0 AR PL SungtiL GB;}{/f4/fnil/fprq0/fcharset0 Luxi Sans;}{/f5/fnil/fprq2/fcharset0 Luxi Sans;}{/f6/fnil/fprq0/fcharset0 Luxi Sans;}}
{/colortbl;/red0/green0/blue0;/red128/green128/blue128;}
{/*/pgdsctbl
{/pgdsc0/pgdscuse195/pgwsxn12240/pghsxn15840/marglsxn1800/margrsxn1800/margtsxn1440/margbsxn1440/pgdscnxt0 Standard;}}
{/*/pgdscno0}
/pard/plain /absw1800/absh900/posy284/posx288
{/*/flyopaque/flymaincnt2}
{/pict/wmetafile8
...wmf图片数据...
/pard
/pard/plain /ltrpar/s1/ql/rtlch/af5/afs24/lang255/ltrch/dbch/af3/langfe2052/hich/fs24/lang1033/loch/fs24/lang1033 {/rtlch /ltrch/loch/f1/fs24/lang1033/i0/b0 111111}
/par /pard/plain /ltrpar/s1/ql/rtlch/af5/afs24/lang255/ltrch/dbch/af3/langfe2052/hich/fs24/lang1033/loch/fs24/lang1033 {/rtlch /ltrch/loch/f1/fs24/lang1033/i0/b0 1111111}
/par /pard/plain /ltrpar/s1/ql/rtlch/af5/afs24/lang255/ltrch/dbch/af3/langfe2052/hich/fs24/lang1033/loch/fs24/lang1033 {/rtlch /ltrch/loch/f1/fs24/lang1033/i0/b0 1111111}
/par /pard/plain /ltrpar/s1/ql/rtlch/af5/afs24/lang255/ltrch/dbch/af3/langfe2052/hich/fs24/lang1033/loch/fs24/lang1033 {/rtlch /ltrch/loch/f1/fs24/lang1033/i0/b0 111111}
/par }
=====table=====
用到的control word在windows下的spec.里面都有
可悲的是不支持竖排表格合并,所以稍微复杂一些的表格用OpenOffice存成rtf后自己都读不对~~
所以我用带边框的frame来充当table中每一个cell
举个例子
{/rtf1/ansi
{/fonttbl{/f0/froman/fprq2/fcharset0 Nimbus Roman No9 L;}{/f1/froman/fprq2/fcharset0 Nimbus Roman No9 L;}{/f2/fnil/fprq2/fcharset0 AR PL SungtiL GB;}{/f3/fnil/fprq2/fcharset0 Luxi Sans;}{/f4/fnil/fprq0/fcharset0 Luxi Sans;}}
{/colortbl;/red0/green0/blue0;/red128/green128/blue128;}
{/*/pgdsctbl
{/pgdsc0/pgdscuse195/pgwsxn11905/pghsxn16837/marglsxn1134/margrsxn1134/margtsxn1134/margbsxn1134/pgdscnxt0 Standard;}}
/pard/plain
/trowd/trql/trhdr/trrh-2160/trpaddft0/trpaddfl0/trpaddfb0/trpaddfr0/clbrdrt/brdrs/brdrw1/brdrcf1/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/cellx2040/clbrdrt/brdrs/brdrw1/brdrcf1/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/cellx2604/clbrdrt/brdrs/brdrw1/brdrcf1/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/clbrdrr/brdrs/brdrw1/brdrcf1/cellx3906
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235/qc{/f0/fs24 1}/cell/pard/plain
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235/qc{/f0/fs24 2}/cell/pard/plain
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235/qc{/f0/fs24 3}/cell/row/pard
/trowd/trql/trrh-1000/trpaddft3/trpaddt55/trpaddfl3/trpaddl55/trpaddfb3/trpaddb55/trpaddfr3/trpaddr55/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/cellx2040/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/cellx2604/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/clbrdrr/brdrs/brdrw1/brdrcf1/cellx3906
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235{/f0/fs24 4}/cell/pard/plain
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235{/f0/fs24 5}/cell/pard/plain
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235{/f0/fs24 6}/cell/row/pard
/trowd/trql/trpaddft3/trpaddt55/trpaddfl3/trpaddl55/trpaddfb3/trpaddb55/trpaddfr3/trpaddr55/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/cellx3040/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/clbrdrr/brdrs/brdrw1/brdrcf1/cellx3906
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235{/f0/fs24 7}/cell/pard/plain
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235{/f0/fs24 8}/cell/row/pard/plain
/par}
下面的内容是我直接读openoffice生成的rtf文件分析他最简单的control word
与Windows下的RTF一样
先是font table和color table
接着是一段可有可无的info
然后是页面信息
=====page=====
{/*/pgdsctbl
{/pgdsc0/pgwsxn12240/pghsxn15840/marglsxn1800/margrsxn1800/margtsxn1440/margbsxn1440 Standard;}}
/pgdsctbl 就当是page table了
/pgdscN 第N种页面样式,但是即使是多页也不会有多种样式,所有页保持同一种样式,当然你要是愿意多写几个然后不用也可以
/pgwsxnN 页宽为N twips
/pghsxnN 页高为N twips
/marglsxnN /margrsxnN /margtsxnN /margbsxnN这些不用多说,设置边缘宽度
最后的Standard应该说这个页是标准页,我去了他还能显示,不过还是留着吧
{/*/pgdscno0}这个control word就是表示新的一页开始了.
=====frame=====
在rtf中有很多东西可以当容器,这里我挑了"框",也就是frame contents
/pard/plain 先刷新一下
/abswN/abshN/posyN/posxN 再定义frame的大小和位置
/frmtxtbrlv 表示frame中的文字是竖排vertical的(这些在Word2003RTFSpec上都有)
如果你要给你的frame边框那么就要加
{/*/flycntnt
{/*/brdrt/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28
{/*/brdrl/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28
{/*/brdrb/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28
{/*/brdrr/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28}
开头的/flycntnt我猜他表示给frame一些属性(也许只是给一些边框的属性)
四行分别是上左下右边框的属性,属性中的内容我查不到也懒的试了,如此写便可以了.
唯一碰到的需要知道的是/brdlncolN
/brdlncolN是边框的颜色,N是你color table中颜色的号
/brspN Space in twips between borders and the paragraph
接着就可以写字了{/f1/fs24 ...}
结束的时候要/par
换行的时候也要/par,如果后面还有内容,那这个/par就代表回车了,没有内容的话就是frame结束的意思
例子:
{/rtf1/ansi/
{/fonttbl{/f0/froman/fprq2/fcharset0 Nimbus Roman No9 L;}{/f1/froman/fprq2/fcharset134 Nimbus Roman No9 L;}{/f2/froman/fprq2/fcharset134 Nimbus Roman No9 L;}{/f3/fnil/fprq0/fcharset0 Luxi Sans;}}
{/colortbl;/red0/green0/blue0;/red128/green128/blue128;}
{/*/pgdsctbl
{/pgdsc0/pgwsxn12240/pghsxn15840/marglsxn1800/margrsxn1800/margtsxn1440/margbsxn1440 Standard;}}
/pard/plain
/absw1000/absh3053/posy2372/posx3000
/frmtxtbrlv
{/*/flycntnt
{/*/brdrt/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28
{/*/brdrl/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28
{/*/brdrb/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28
{/*/brdrr/brdlncol1/brdlnin0/brdlnout1/brdlndist0}/brsp28}
{/f1/fs24 #######################}/par
/pard/plain
/absw3000/absh6053/posy100/posx100
{/f1/fs24 $$$$$$$$$$$$$$$$$$$$$}
/par}
=====image=====
OpenOffice将插入的图片都按照wmf格式内嵌到文件中,当然你这里插JPEG也可以
{/*/flyopaque/flymaincnt2}
这两个controlword控制图片环绕方式
/flyopaque 置于背景
/flymaincntN N 0:无; 2:贯穿; 4:平行; 5:最佳; 8:之前; 10:之后(这些属性都是环绕中的预置)
例子:
{/rtf1/ansi
{/fonttbl{/f0/froman/fprq2/fcharset0 Nimbus Roman No9 L;}{/f1/froman/fprq2/fcharset0 Nimbus Roman No9 L;}{/f2/froman/fprq2/fcharset0 Nimbus Roman No9 L;}{/f3/fnil/fprq2/fcharset0 AR PL SungtiL GB;}{/f4/fnil/fprq0/fcharset0 Luxi Sans;}{/f5/fnil/fprq2/fcharset0 Luxi Sans;}{/f6/fnil/fprq0/fcharset0 Luxi Sans;}}
{/colortbl;/red0/green0/blue0;/red128/green128/blue128;}
{/*/pgdsctbl
{/pgdsc0/pgdscuse195/pgwsxn12240/pghsxn15840/marglsxn1800/margrsxn1800/margtsxn1440/margbsxn1440/pgdscnxt0 Standard;}}
{/*/pgdscno0}
/pard/plain /absw1800/absh900/posy284/posx288
{/*/flyopaque/flymaincnt2}
{/pict/wmetafile8
...wmf图片数据...
/pard
/pard/plain /ltrpar/s1/ql/rtlch/af5/afs24/lang255/ltrch/dbch/af3/langfe2052/hich/fs24/lang1033/loch/fs24/lang1033 {/rtlch /ltrch/loch/f1/fs24/lang1033/i0/b0 111111}
/par /pard/plain /ltrpar/s1/ql/rtlch/af5/afs24/lang255/ltrch/dbch/af3/langfe2052/hich/fs24/lang1033/loch/fs24/lang1033 {/rtlch /ltrch/loch/f1/fs24/lang1033/i0/b0 1111111}
/par /pard/plain /ltrpar/s1/ql/rtlch/af5/afs24/lang255/ltrch/dbch/af3/langfe2052/hich/fs24/lang1033/loch/fs24/lang1033 {/rtlch /ltrch/loch/f1/fs24/lang1033/i0/b0 1111111}
/par /pard/plain /ltrpar/s1/ql/rtlch/af5/afs24/lang255/ltrch/dbch/af3/langfe2052/hich/fs24/lang1033/loch/fs24/lang1033 {/rtlch /ltrch/loch/f1/fs24/lang1033/i0/b0 111111}
/par }
=====table=====
用到的control word在windows下的spec.里面都有
可悲的是不支持竖排表格合并,所以稍微复杂一些的表格用OpenOffice存成rtf后自己都读不对~~
所以我用带边框的frame来充当table中每一个cell
举个例子
{/rtf1/ansi
{/fonttbl{/f0/froman/fprq2/fcharset0 Nimbus Roman No9 L;}{/f1/froman/fprq2/fcharset0 Nimbus Roman No9 L;}{/f2/fnil/fprq2/fcharset0 AR PL SungtiL GB;}{/f3/fnil/fprq2/fcharset0 Luxi Sans;}{/f4/fnil/fprq0/fcharset0 Luxi Sans;}}
{/colortbl;/red0/green0/blue0;/red128/green128/blue128;}
{/*/pgdsctbl
{/pgdsc0/pgdscuse195/pgwsxn11905/pghsxn16837/marglsxn1134/margrsxn1134/margtsxn1134/margbsxn1134/pgdscnxt0 Standard;}}
/pard/plain
/trowd/trql/trhdr/trrh-2160/trpaddft0/trpaddfl0/trpaddfb0/trpaddfr0/clbrdrt/brdrs/brdrw1/brdrcf1/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/cellx2040/clbrdrt/brdrs/brdrw1/brdrcf1/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/cellx2604/clbrdrt/brdrs/brdrw1/brdrcf1/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/clbrdrr/brdrs/brdrw1/brdrcf1/cellx3906
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235/qc{/f0/fs24 1}/cell/pard/plain
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235/qc{/f0/fs24 2}/cell/pard/plain
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235/qc{/f0/fs24 3}/cell/row/pard
/trowd/trql/trrh-1000/trpaddft3/trpaddt55/trpaddfl3/trpaddl55/trpaddfb3/trpaddb55/trpaddfr3/trpaddr55/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/cellx2040/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/cellx2604/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/clbrdrr/brdrs/brdrw1/brdrcf1/cellx3906
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235{/f0/fs24 4}/cell/pard/plain
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235{/f0/fs24 5}/cell/pard/plain
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235{/f0/fs24 6}/cell/row/pard
/trowd/trql/trpaddft3/trpaddt55/trpaddfl3/trpaddl55/trpaddfb3/trpaddb55/trpaddfr3/trpaddr55/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/cellx3040/clbrdrl/brdrs/brdrw1/brdrcf1/clbrdrb/brdrs/brdrw1/brdrcf1/clbrdrr/brdrs/brdrw1/brdrcf1/cellx3906
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235{/f0/fs24 7}/cell/pard/plain
/intbl/absw3907/absh3285/dfrmtxtx114/dfrmtxty114/posy804/posx2235{/f0/fs24 8}/cell/row/pard/plain
/par}