docx/ fzip引发的一堆挫事

 估计上回分析EMF文件还不过瘾,这回突然有兴趣想把docx里面的图片给挖出来。用RIA来实现,B/S模式的服务还是比较方便的。

 

1,从docx说起,改了后缀为zip就可以看到里面有啥东西了。图片就放在word/media文件夹下,图片的其他信息放在word/document.xml里面。对于ooxml,用的时候再去看那些节点是什么意思,这样理解得更快点,不适合闲暇时玩弄。docx大概就这样,对它不太有兴趣。

 

2,从fzip说起,开源库,compress和decompress文件。这个开源库用了个编码技巧,代码如下:

  parseFunc为function类型,一个while里面跳了parseHead,parseExt,parseContent几个函数后再结束,也就是等于把zip里面的每个压缩文件的文件头和数据,扩展字段都跑了一遍。和代码大全里面提到的索引方法类似,可以修改一下之前写EMF文件分析的几个很突兀的if else if格式。用fzip很快就把docx里面的图片给取出来了,不过这样做下去也没太多意思,但如果不用fzip,直接手工取出来会是咋样的。

 

3,deflate,zlib

网上的一撮撮的代码都是用AIR实现的,大部分zip都是用deflate来压缩的,所以把数据部分取出来后,直接一个uncompress("deflate")就处理完了。没啥高明之处。而用RIA,就好玩了。RIA只对ZLIB做处理,也就是大部分zip都无法用RIA直接解压。而deflate和zlib核心部分是相同的,而zlib比deflate多了2个头字节和尾部一个4字节的校验码,这样把数据部分抽取出来后,加上个头和尾,然后用uncompress就可以解压。如果没有理解错压缩数据这部分,应该能解出来,但是实验结果却还是报出解压错误。再看回fzip里面的东西,zlib的校验码是_adler32,而这个adler32却是在扩展字段里面读取的,大部分zip的扩展字段还都是为0.所以得出结论,做了件挫事。用deflate格式来压缩的话,就只能用deflate来解,其他格式信息不足,显然就不能用其他格式的函数来解。挫!

 

4,fzip,压缩数据算法

这个开源库很不错,以及一个压缩数据这一块还是狠吸引人的。学习里面的全部时间上估计不太实际,学里面的部分,有些时候还是可以做到。多做些挫事,多长些智慧。

 

附上一些查过来的网址 :

gzip原理与实现:

http://blog.csdn.net/FringeDream/archive/2005/12/08/546890.aspx

压缩算法deflate

http://hi.baidu.com/ͼ%BA%BC%BFƼ%BC/blog/item/b2d1731812146eb34bedbc5b.html

flex zlib压缩数据包格式

http://wenyu.csai.cn/user1/24996/archives/2009/37782.html

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值