将 PDF 转换为 TIFF 的好库吗?

发布于 2024-07-10 19:47:39 字数 1557 浏览 8 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

烦人精 2024-07-17 19:47:40

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

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

No Itext can not convert PDFs to Tiff.

However, there are commercial libraries that can do that. jPDFImages is a 100% java library that can convert PDF to images in TIFF, JPEG or PNG formats (and maybe JBIG? I am not sure). It can also do the reverse, create PDF from images. It starts at $300 for a server.

ζ澈沫 2024-07-17 19:47:40

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

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

Here is a good article and wrapper classes for using GhostScript with C# .NET...ended up using this in production

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

掩于岁月 2024-07-17 19:47:40

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

}

I have some great experience with iText (now, I'm using 5.0.6 version) and this is the code for tiff convertion into 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;

}
冬天的雪花 2024-07-17 19:47:39

我无法推荐任何代码库,但使用 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...< /code> 从 GhostScript 获取各种 TIFF 子格式的直接 TIFF 输出。

I can't recommend any code library, but it's easy to use GhostScript to convert PDF into bitmap formats. I've personally used the script below (which also uses the netpbm utilties) to convert the first page of a PDF into a JPEG thumbnail:

#!/bin/sh

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

You can use -sDEVICE=tiff... to get direct TIFF output in various TIFF sub-formats from GhostScript.

阪姬 2024-07-17 19:47:39

免责声明:我在 Atalasoft

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

Disclaimer: I work for Atalasoft

We have an SDK that can convert PDF to TIFF. The rendering is powered by Foxit software which makes a very powerful and efficient PDF renderer.

○愚か者の日 2024-07-17 19:47:39

我们这里也做PDF转换-> G3 tiff 具有高分辨率和低分辨率。 根据我的经验,您可以拥有的最好的工具是 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 所做的那样。

希望这有帮助,问候

we here also doing conversion PDF -> G3 tiffs with high and low res. From my experience the best tool you can have is Adobe PDF SDK, the only problem with it is its insane price. So we don't use it.

what works fine for us is ghostscript, last versions are pretty much robust and do render correctly majority of the pdfs. And we have quite a few of them coming during the day. In production conversion is done using the gsdll32.dll; but if you want to try it use the following command line:

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

it would convert your PDF into the high res G3 TIFF. and prefix.ps code is here:

<< 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

another thing about this sdk is that it's open source; you're getting both c and ps (postscript) source code for it. Also if you're going with another tool check what kind of an engine they have to power the pdf rendering, it could happen they are using gs for it; like for instance LeadTools does.

hope this helps, regards

山田美奈子 2024-07-17 19:47:39

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

You can use the icepdf library (Apache 2.0 License).
They even provide this exact use case as one of their example source code:
http://wiki.icesoft.org/display/PDF/Multi-page+Tiff+Capture

匿名。 2024-07-17 19:47:39

也许没有必要将 PDF 转换为 TIFF。 传真很可能是 PDF 中的嵌入图像,因此您只需再次提取这些图像即可。 使用已经提到的 iText 库应该可以实现这一点。

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

Maybe it is not neccessary to convert the PDF into TIFF. The fax will most likely be an embedded image in the PDF, so you could just extract these images again. That should be possible with the already mentioned iText library.

I don't know if this is easier than the other approach.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文