5

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

4

9 回答 9

6

我不能推荐任何代码库,但使用 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 输出。

于 2008-12-10T16:01:26.317 回答
5

免责声明:我为 Atalasoft 工作

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

于 2009-06-26T20:31:33.037 回答
3

我们在这里还进行转换 PDF -> G3 tiffs 的高分辨率和低分辨率。根据我的经验,你可以拥有的最好的工具是 Adob​​e 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 <</PageSize [0 0 612 1728]>> put
/Policies << /PageSize 3 >> >> setpagedevice

这个sdk的另一件事是它是开源的;你得到了它的 c 和 ps (postscript) 源代码。此外,如果您要使用其他工具检查他们必须为 pdf 渲染提供动力的引擎类型,则可能会发生他们正在使用 gs 的情况;就像 LeadTools 一样。

希望这会有所帮助,问候

于 2009-11-24T14:21:30.453 回答
3

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

于 2012-10-10T15:32:08.317 回答
1

也许不需要将 PDF 转换为 TIFF。传真很可能是 PDF 中的嵌入图像,因此您可以再次提取这些图像。这应该可以通过已经提到的 iText 库来实现。

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

于 2008-12-10T18:21:27.657 回答
1

看看Apache PDFBox - 一个 Java PDF 库

于 2009-11-24T14:08:06.890 回答
0

没有 Itext 不能将 PDF 转换为 Tiff。

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

于 2009-03-17T16:41:43.043 回答
0

Here is a good article and wrapper classes for using GhostScript with C# .NET...最终在生产中使用它

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

于 2011-11-30T09:03:41.793 回答
-1

我对 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;

}
于 2011-03-30T12:15:40.140 回答