一个很好的库,用于将PDF转换为TIFF?

我需要一个Java库来将PDF转换为TIFF图像。 PDF是传真,我将转换为TIFF,以便我可以在图像上进行条形码识别。 任何人都可以推荐一个好的免费开源库,用于从PDF转换为TIFF吗?

免责声明:我在Atalasoft工作

我们有一个可以将PDF转换为TIFF的SDK 。 该渲染由Foxit软件提供支持,该软件可以生成function强大且高效的PDF渲染器。

我不推荐任何代码库,但使用GhostScript将PDF转换为位图格式很容易。 我个人使用下面的脚本(也使用netpbm实用程序)将PDF的第一页转换为JPEG缩略图:

#!/bin/sh /opt/local/bin/gs -q -dLastPage=1 -dNOPAUSE -dBATCH -dSAFER -r300 \ -sDEVICE=pnmraw -sOutputFile=- $* | pnmcrop | pnmscale -width 240 | cjpeg 

您可以使用-sDEVICE=tiff...从GhostScript以各种TIFF子格式获得直接TIFF输出。

我们这里也做转换PDF – > G3 tiffs高低分辨率。 根据我的经验,您可以拥有的最佳工具是Adobe PDF SDK,唯一的问题是它的疯狂价格。 所以我们不使用它。

什么对我们来说很好用的是ghostscript ,最后版本非常强大,并且可以正确呈现大多数pdf。 我们有很多人在白天来。 在生产中,使用gsdll32.dll完成转换; 但是如果你想尝试它,请使用以下命令行:

 gswin32c -dNOPAUSE -dBATCH -dMaxStripSize=8192 -sDEVICE=tiffg3 -r204x196 -dDITHERPPI=200 -sOutputFile=test.tif prefix.ps test.pdf 

它会将您的PDF转换为高分辨率G3 TIFF。 和prefix.ps代码在这里:

 << currentpagedevice /InputAttributes get 0 1 2 index length 1 sub {1 index exch undef } for /InputAttributes exch dup 0 <> put /Policies << /PageSize 3 >> >> setpagedevice 

关于这个sdk的另一件事是它是开源的; 你得到它的c和ps(postscript)源代码。 此外,如果您使用其他工具检查他们有什么样的引擎来支持pdf渲染,可能会发生他们正在使用gs; 比如LeadTools。

希望这会有所帮助,问候

您可以使用icepdf库(Apache 2.0许可证)。 他们甚至提供了这个确切的用例作为他们的示例源代码之一: http : //wiki.icesoft.org/display/PDF/Multi-page+Tiff+Capture

也许没有必要将PDF转换为TIFF。 传真很可能是PDF中的嵌入图像,因此您可以再次提取这些图像。 对于已经提到的iText库,这应该是可能的。

我不知道这是否比其他方法更容易。

看看Apache PDFBox – 一个Java PDF库

没有Itext无法将PDF转换为Tiff。

但是,有商业图书馆可以做到这一点。 jPDFImages是一个100%的java库,可以将PDF转换为TIFF,JPEG或PNG格式的图像(也许是JBIG?我不确定)。 它也可以反过来,从图像创建PDF。 服务器的起价为300美元。

这是一篇很好的文章和包装类,用于在C#.NET中使用GhostScript …最终在生产中使用它

http://www.codeproject.com/KB/cs/GhostScriptUseWithCSharp.aspx

我对iText有很好的经验(现在,我使用的是5.0.6版本),这是tiff转换成pdf的代码:

 private static String convertTiff2Pdf(String tiff) { // target path PDF String pdf = null; try { pdf = tiff.substring(0, tiff.lastIndexOf('.') + 1) + "pdf"; // New document A4 standard (LETTER) Document document = new Document(PageSize.LETTER, 0, 0, 0, 0); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdf)); int pages = 0; document.open(); PdfContentByte cb = writer.getDirectContent(); RandomAccessFileOrArray ra = null; int comps = 0; ra = new RandomAccessFileOrArray(tiff); comps = TiffImage.getNumberOfPages(ra); // Convertion statement for (int c = 0; c < comps; ++c) { Image img = TiffImage.getTiffImage(ra, c + 1); if (img != null) { System.out.println("page " + (c + 1)); img.scalePercent(7200f / img.getDpiX(), 7200f / img.getDpiY()); document.setPageSize(new Rectangle(img.getScaledWidth(), img.getScaledHeight())); img.setAbsolutePosition(0, 0); cb.addImage(img); document.newPage(); ++pages; } } ra.close(); document.close(); } catch (Exception e) { logger.error("Convert fail"); logger.debug("", e); pdf = null; } logger.debug("[" + tiff + "] -> [" + pdf + "] OK"); return pdf; }