rtf文件

Using Omni to do RTF Editor

徘徊边缘 提交于 2020-02-06 23:33:58
首先这是一个中断的项目(虽然以后个人可能会继续,但在公司层面上已经到此为止了),但是还是完成了相关的内容: 读取rtf/rtfd文件,编辑(字体,大小,颜色),添加图片,保存。 (至于为什么要选择rtf格式来实现富文本编辑,下面会做说明) 在项目过程中还是遇到不小的问题,得到些许收获,因此在这一并纪录下来。 2012-02-06 16:04:07 首先我们得了解RTF是种什么格式,这个可以到微软的网站上取找,或者搜索 “RTFV1.7规范.doc”。 规范里面主要是一些控制字,关键字之类的东西,我们需要对一些常见的字符进行解析以保证可以显示大多数格式的rtf文件。 在之前的日志里,我提到了OmniGroup的三大类,这里再说明一下: <OmniUI/OUIRTFReader.h>:读取rtf/rtfd文件,得到NSAttributedString对象(iOS可以使用CoreText绘制NSAttributedString) <OmniUI/OUIEditableFrame.h>:将NSAttributedString对象绘制到View,并实现编辑功能(主要实现iOS的相关delegate,如UIKeyInput,UITextInputTraits,EditMenu等) <OmniUI/OUIRTFWriter.h>:将NSAttributedString对象 保存程文件rtf

JAVA读取RTF文档

女生的网名这么多〃 提交于 2019-12-08 15:12:00
RTF,全称是“富文本格式“,它便于在应用程序之间轻松的转换文本和图形。想了解RTF文件基本格式及相关可以点击 这里 。 需要注意的是,在RTF文件中,对于占双字节的中文,都是用单字节的ASCII字符表示,例如文本“宋体ABC”应该表示为:\'cb\'ce\'cc\'e5ABC, 这种编码我们称之为“汉字机内码”,简称“内码”。把国标码的汉字代码中的区码与位码分别换算为16进制数,然后再分别加上十六进制数80, 即为该汉字的机内码。由于内码的编码方式,所以我们最好在读取RTF文件流的时候将两个字节合并成单个16进制字符,然后在write的时候 将其转换成unicode编码,才能显示成中文字符。 以下有示例代码仅供参考: ( 注意 :这里只解析中文字符,对于单字节字符由于不是内码方式编码,所以是读取不到的) package jj.RTF; /** * 解析RTF文件 * @author jj * */ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java

Java读取word文档解决方案

浪子不回头ぞ 提交于 2019-12-08 15:07:04
java读取word文档时,虽然网上介绍了很多插件poi、java2Word、jacob、itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用);java2Word、jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄;itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法。经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,不需要借助任何插件,只需基本IO操作外加编码转换即可。rtf格式文件表面看来和doc没啥区别,都可以用word打开,各种格式都可以设定。 ----- 实现的功能:读取rtf模板内容(格式和文本内容),替换变化部分,形成新的rtf文档。 ----- 实现思路:模板中固定部分手动输入,变化的部分用$info$表示,只需替换$info$即可。 1、采用字节的形式读取rtf模板内容 2、将可变的内容字符串转为rtf编码 3、替换原文中的可变部分,形成新的rtf文档 主要程序如下: /** * 将制定的字符串转换为rtf编码 */ public String bin2hex(String bin) { char[] digital = "0123456789ABCDEF".toCharArray();