rtf替换图片,rtf插入图片

前段时间,要做一个模版替换问题,将rtf文件中的某个未知加上信息以初始化文档。用rtf可能是最简单的方法,但是在有个地方需要插入一张图片。通过查找资料,得到如下的实现方式

 

while ((i = binput.read()) != -1) {
		    String str = i < 16 ? "0" + Integer.toHexString(i) : Integer
				.toHexString(i);
		    restr.append(str);
	    }

 这里对图片进行读取,由于rtf图片的二进制是处理过的,所以这将其转换,得到图片的16进制特定格式,restr是这个16进制串的存放StringBuffer

然后在使用时

 

result.append("{\\shp{\\*\\shpinst\\shpleft14\\shptop271\\shpright4383\\shpbottom6337\\shpfhdr0\\shpbxmargin\\shpbxignore\\shpbymargin\\shpbyignore\\shpwr2\\shpwrk0\\shpfblwtxt0\\shpz0\\shplid2050{\\sp{\\sn shapeType}{\\sv 75}}{\\sp{\\sn fFlipH}{\\sv 0}}{\\sp{\\sn fFlipV}{\\sv 0}}");
	    result.append("{\\sp{\\sn pib}{\\sv {\\pict\\picscalex5871\\picscaley8088\\piccropl0\\piccropr0\\piccropt0\\piccropb0\\picw132\\pich132\\picwgoal75\\pichgoal75\\jpegblip\\bliptag-27338650{\\*\\blipuid fe5ed8662283528c0df6c82776feb0dc}");
	    result.append(restr);
	    result.append("}");
	    result.append("}}{\\sp{\\sn pibFlags}{\\sv 2}}{\\sp{\\sn fRecolorFillAsPicture}{\\sv 0}}{\\sp{\\sn fUseShapeAnchor}{\\sv 0}}{\\sp{\\sn fLine}{\\sv 0}}{\\sp{\\sn posrelh}{\\sv 0}}");
	    result.append("{\\sp{\\sn posrelv}{\\sv 0}}{\\sp{\\sn dhgt}{\\sv 251660288}}{\\sp{\\sn fLayoutInCell}{\\sv 1}}}}");

 这么处理是由于rtf一些格式定义,可能rtf版本不同有差异。如果你不确定这里填什么,你可以在rtf中添加图片,然后查看源码。通过微软的rtf格式说明,能了解各个“标签”的使用方式。如果非要明确上面的{\\shp{...这些是什么意思,可以到微软官方去下载有关rft的说明,

 

 

这里只是说明怎么实现插入图片,如果你想在这找到全面的代码,那我还有什么说的。是不是把微软rtf标签使用,一个完整例子写出来,才是一篇好的文章。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值