Fluid idea for Life

随笔,杂记

as3 pdf Reader

as3 pdf Reader,这是我最近在专注开发的一个开源工具库。目前Air支持动态加载pdf,但需要软件支持,使用flash是否可以加载pdf?从理论上说,使用as3解析pdf文件是可行的,不外乎分析二进制流,只不过pdf的结构要复杂一些。我有这个念头已经有一段时间了,打算花几个月的时间,实现一个类似Adobe Reader(当然功能要简单的多)的浏览器。

pdf文件的结构是一个环环相扣的树型结构,对于第一次研究文件结构的我来说,开始真被弄得很昏,好不容易才理清了中间的关系。查找资料的过程中,发现中文的资料比较少。Java、C#等有对应的开源库,看那些源代码真是件头疼的事。目前是照办了PDFBox的代码,从java搬到as,工程量很大,决非简单的重写。

解析pdf和生成pdf这件事逻辑上是可逆的,但实现起来难度却很大,我觉得读比写要困难,AlivePDF的代码对我的帮助有限。PDF文件格式标准到现在已经有多个版本,这无疑增加了解析的难度,其中文本、数据的编码方式也有很多。

不管怎样,作为自己开发的第一个有意义的开源工具库,希望能坚持下去。

开发进度: 目前已经完成了文件的二进制流解析部分,中间的过程不可谓不艰辛,但接下来的才是关键,也就是解析页面信息,分离出文字。再接下来,向更高难度挑战,包括解析图片、字体等等,道路还很曲折。

这是第一个Demo,读取了文件的基本信息:

[kml_flashembed movie="http://www.fluidea.cn/lab/pdfReader/Demo_Text.swf" height="380" width="480" /]

ps:pdf中,对文本一般采用flate编码方式压缩,刚好as3支持,省了一大笔事!!ByteArray的compress和uncompress默认使用的是zlib压缩方式,这个功能原来这么有用!最后,来一段压缩过的新年祝福: 78 DA 7B 36 6D C3 D3 9D 5B 9E EE 5F FD 64 E7 04 45 00 44 76 09 1C

var s:String = "78 DA 7B 36 6D C3 D3 9D 5B 9E EE 5F FD 64 E7 04 45 00 44 76 09 1C";
var stream:ByteArray= new ByteArray();
var arr:Array = s.split(" ");
for (var i:int = 0; i < arr.length; i++)
{
	stream.writeByte ( parseInt(arr[i], 16) );
}			
stream.uncompress();
trace(stream);

由于flash player的安全限制,可以将swf文件下载到本地运行。

Tags: as3 pdfReader

上一篇: 25行as代码能做出什么?
下一篇: AS pdfBox 0.1

访客评论

  1. #1 walktree 2010-06-24, 9:02 AM
    很抱歉,这个项目目前已停止开发了。
  2. #2 Terry 2010-06-20, 1:50 PM
    进展如何??
  3. #3 walktree 2009-09-18, 6:07 AM
    hi,Mcometa,I will try... :smile:
  4. #4 Mcometa 2009-09-17, 8:59 AM
    Wish you had english version of this. I was referred to by user from website (AlivePDF) but I can't understand a thing.

    Just wishing... :roll:
  5. #5 Xu Cui 2009-07-12, 4:37 PM
    那就太好了。期待你的好消息。
  6. #6 walktree 2009-07-11, 2:15 PM
    是的,目前文字提取还没做完,这段时间比较忙,已经无暇弄这个项目了,过几天就有时间了。
  7. #7 Xu Cui 2009-07-11, 3:51 AM
    怎么才能把文字提取出来呢?PDFTextStripper好像不能用。
  8. #8 Xu Cui 2009-07-10, 6:13 AM
    真是不错,很好的东西。
  9. #9 walktree 2009-04-01, 12:04 AM
    上面的连接中有下载,有兴趣可以看看。
  10. #10 mark 2009-03-31, 9:07 AM
    目前正在研究parse pdf 现在学习as,以前学习java 能参与吗?
    qq:543137459
    mail:javahlq@126.com
Total: 18Page 1 of 212Next ›

发表评论

评论内容:

点击获得Trackback地址