PDFBox-convertToImage-"type not implemented yet"
2008-05-20 00:54 晓风残月 阅读(6006) 评论(14) 编辑 收藏 举报昨天刚在使用PDFBox解析PDF文档中简单介绍了PDFBox的.NET版本使用,今天CSDN就有问PDF转Image的问题。从PDFBox的文档中找到了如何执行此项操作:
使用 PDPage.convertToImage() 方法。
将其转成.NET版本确抛出了 "type not implemented yet" 的 java.lang.UnsupportedOperationException 异常。
using org.pdfbox.pdmodel; using org.pdfbox.util; using org.pdfbox; using java.awt.image;
PDDocument doc = PDDocument.load(@"F:\temp\512.pdf"); PDPage page = doc.getDocumentCatalog().getAllPages().get(0) as PDPage; BufferedImage thumb = page.convertToImage(); // HERE: throws java.lang.UnsupportedOperationException with "type not implemented yet". // ...
通过Reflector发现,原来 PDPage.converToImage 方法中使用了一个 BufferedImage 不支持的参数类型(int type)进行构造,不熟悉Java不知道参数意义,应该是 IKVM.GNU.Classpath.dll 没有全部实现 java 库。
没有搭建 java 环境也无法测试 java 版本是否可以运行,在 sourceforg.net 的 pdfbox 论坛留了言,希望后面能够有跟踪发现。
Update 05/21/2008
由于PDFBox0.7.3.NET使用的IKVM.GNU.ClassPath.dll还有很多未实现的功能(与JDK1.4相比),因此PDFBox很多功能在.NET环境也无法使用。但是根据danielwilson 在 https://sourceforge.net/forum/message.php?msg_id=4972299的回复,正在开发当中的0.7.4版本应该实现了与Image相关转换功能呢。因此只有把希望寄托在 IKVM 身上了,希望新版的IKVM-0.3.6.0.11(PDFBox0.7.3使用的是IKM-0.3.0)使用的GNU.ClassPath实现了更多JDK的兼容性支持。很遗憾的是,虽然成功编译PDFBox.NET ,但是IKVM还是会抛出“Not Implement”异常。
PDDocument doc = PDDocument.load(pdfPath); PDPage page = doc.getDocumentCatalog().getAllPages().get(0) as PDPage; BufferedImage bufferedImage = page.convertToImage(); File output =new File(pdfPath + ".jpg"); ImageIO.write(bufferedImage, "JPEG", output); // HERE: throws java.lang.Error with "Not implemented".
不熟悉Java,只能简单的使用ImageIO.write 来输出 BufferedImage,还有其他 ImageWriter 可以用,但是照样是到处“Not implemented”。