2010-07-27 80 views
1

我让用户能够将图像上传到我的Air应用程序,然后在图像控件中显示此图像。但我需要以相同的方式允许PDF上传,所以我需要将PDF转换为图像。我只关心他们现在上传的PDF的第一页。如何将PDF文件转换为图像?

我在做什么是: 1)用户浏览与该文件参考控制文件 2)用户选择图像或PDF上传 3)我说的图像编码为Base64和存储它 4)然后我从该base64加载类似的东西:

public function decodeImage(b64String:String):void{ 
    var decoder:Base64Decoder = new Base64Decoder(); 
    decoder.decode(b64String); 
    var imgLoader:Loader = new Loader(); 
    imgLoader.loadBytes(decoder.toByteArray()); 
    imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,decodedImageLoaded); 
} 

private function decodedImageLoaded(event:Event):void{ 
    var imgLoader:Loader = (event.target as LoaderInfo).loader; 
    var bmp:Bitmap = Bitmap(imgLoader.content); 
    imgLoader.removeEventListener(Event.COMPLETE, decodedImageLoaded); 
    var img:Image = new Image(); 
    img.source = bmp; 
    this.addChild(img); 
} 

此方法适用于.gif,.jpg和.png。在我的过程中的某个时候,可能需要将PDF的第一页转换为PNG的初始上传,以便我可以使用此过程的其余部分。

我欢迎任何想法,唯一的要求是它必须是Air应用程序的一部分,我不能使用像服务器上运行的ImageMagick之类的东西,但我可以使用我可以编译的组件到成品。

回答

1

我相信AlivePDF for Flash现在具有读取PDF文件的功能。您也可以尝试使用PurePDF。你可以使用其中的一些来获得想要的页面并将其转换为图像。

+0

我在AlivePDF中看不到任何内容可以读取/转换,PurePDF似乎可能有内容。将不得不回顾一下。 – invertedSpear 2010-07-28 15:26:54

+0

根据http://alivepdf.bytearray.org/?p=348,可以导入现有PDF的PDFi正在成为AlivePDF的一部分。然而,没有人注意到这实际上已经发生,并且已经接近2年了。 – adamcodes 2010-07-28 16:06:15

1

你见过swftools?它能够将PDF转换为SWF,PNG,JPG等...

+0

也许我正在阅读错误的文档,但swftools似乎是独立的,我需要直接在我的AIR应用中使用某些东西。 – invertedSpear 2010-07-28 15:22:48

+0

事实上,它是独立的,但如果您使用AIR 2.0,则可以直接与AIR 2.0中的命令行脚本进行交互。这会有可能吗? – infomaniac 2010-07-28 20:33:02

+0

我明白你的目标是什么,可能是一个很好的解决方案,但对于我们的产品经理来说,要求第三方安装会很难。 – invertedSpear 2010-07-28 21:20:48