Fluid idea for Life

随笔,杂记

purePDF,又一个PDF库

purepdf,作者称是移植自iText库,具体可以看这里:

http://www.sephiroth.it/weblog/archives/2010/02/purepdf_a_complete_actionscript_pdf_l.php

到目前为止,ActionScript关于生成PDF的库已经有不少了,比如最早的AlivePDF,解析PDF的库有之前提到的Pavo

最近一段时间比较清闲,于是给自己充电,仔细看完了一本书,同时学习Python,也继续pdfReader的开发,争取在春节前后完成文本的提取。

Tags: purepdf

as3 pdfReader的进展

最近一段时间,用所有可用的时间,投入到as3 pdfReader的开发中,取得了一定的进展。

相对于0.1版本,修正了若干Bug和错误。对PDF 1.4版本的文件进行了测试,基本上没发现问题,由于1.5以后有新的变化,比如object stream,这些还需要分析解决。

在提取文本上,没有进行编码的文本已经没问题了(这好像是废话,没有被压缩就是纯文本),对于压缩过的,由于压缩算法有几种,现在在写移植解码算法,比如 ASCII85、LZW。

另外,对于中文的提取,还有很多疑问,希望在这方面有经验的同志,能够加入。最新代码可以通过 SVN获取。

Tags: pdfreader

AS pdfBox 0.1

今天花了些时间把前面的代码整理出来,有兴趣的朋友可以下载看看。 http://code.google.com/p/as3-pdfreader/downloads/list

抽取文字的部分还在开发中,遇到一些问题,一直没有太多时间来研究。 09年,只能先把眼前最重要的事情做完,再来做自己感兴趣的东西。祝朋友们身体健康,新年有好心情!

Tags: as3 pdfReader

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