【问题标题】:A good library for converting PDF to TIFF? [closed]将 PDF 转换为 TIFF 的好库? [关闭]
【发布时间】:2025-12-27 18:05:12
【问题描述】:

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

【问题讨论】:

    标签: java pdf tiff


    【解决方案1】:

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

    【讨论】:

    • 我之前用过ghostscript解决方案,但是对于我需要处理的音量来说,它实在是太慢了。
    【解决方案2】:

    免责声明:我为 Atalasoft 工作

    We have an SDK that can convert PDF to TIFF。渲染由 Foxit 软件提供支持,该软件是一个非常强大和高效的 PDF 渲染器。

    【讨论】:

    • 链接返回404错误,请更新您的答案。谢谢
    • 完成 -- 查找 DotImage Document Imaging 的 PDF 光栅化插件
    【解决方案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 一样。

    希望这会有所帮助,问候

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              【解决方案8】:

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

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

              【讨论】:

                【解决方案9】:

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

                【讨论】:

                • 情况正好相反。 OP 已经有 PDF 并希望将其转换为 TIFF。
                最近更新 更多