【问题标题】:How to create a linearized (fast web view) pdf using pdfbox 2.0 in Java?如何在 Java 中使用 pdfbox 2.0 创建线性化(快速 Web 视图)pdf?
【发布时间】:2016-09-30 13:27:17
【问题描述】:

我有一些用于创建 pdf 的 .jpg 文件。我一直在寻找几个小时,但没有找到任何方法来线性化 pdf!我很难找到任何有关如何操作的文档或指南,现在希望在这里获得一些帮助。我还查看了 pdfbox 2.0 API 文档,但找不到任何有用的东西。我以前在 ocassion 上使用过 pdfbox,但主要用于拆分或合并 pdf。 以下是我目前所写的内容:

private static void createPdf()
{
    PDDocument doc = new PDDocument();
    try
    {
        File images = new File("images/");
        for (File image : images.listFiles())
        {
            PDPage page = new PDPage();
            doc.addPage(page);
            BufferedImage awtImage = ImageIO.read(image);
            PDImageXObject pdImageXObject = LosslessFactory.createFromImage(doc, awtImage);
            PDPageContentStream contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true);
            contentStream.drawImage(pdImageXObject, 0, 0, (float) (awtImage.getWidth() / 5.4), (float) (awtImage.getHeight() / 5.9));
            contentStream.close();
        }
        doc.setVersion(1.6f);
        doc.save("pdf/images_v1.6.pdf");
    }
    catch (Exception io)
    {
        System.err.println(" -- fail --" + io);
    }
    finally
    {
        try
        {
            doc.close();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

非常感谢任何建议!

编辑解决方案: 我已经按照 Tilman Hausherr 的建议尝试了 qpdf,它解决了我的问题。这是一个例子:

file 400dpi_90.pdf qpdf --show-linearization 400dpi_90.pdf qpdf --linearize --min-version=1.6 400dpi_90.pdf 400dpi_90-out.pdf file 400dpi_90-out.pdf qpdf --check-linearization 400dpi_90-out.pdf

上面的结果如下所示:

400dpi_90.pdf: PDF document, version 1.4 400dpi_90.pdf is not linearized 400dpi_90-out.pdf: PDF document, version 1.6 400dpi_90-out.pdf: no linearization errors

【问题讨论】:

    标签: java pdf pdfbox linearization


    【解决方案1】:

    很抱歉带来坏消息,但它在 PDFBox 中不可用,也不会,请参阅讨论 here。我建议您改用qpdf 对文件进行后处理。

    【讨论】:

    • 这就是我害怕的。我会尝试给 qpdf 看看,当我知道更多时再回来。谢谢!
    【解决方案2】:

    不幸的是,据我所知,没有支持生成线性化 PDF 文件的开源库。

    原因可能是:“支持线性化 PDF 会花费很多工作,但现在大部分时间都没有用。”

    众所周知,设计线性化 PDF 时(1996 年)的网络速度非常低。因此,线性化 PDF 是快速查看 PDF 的第一页并在 Web 上打开时快速跳转到 PDF 的任意页面所必需的,尽管生成线性化 PDF 的实现非常复杂。但是现在网速快多了。大多数 PDF 文件的大小小于 10 MB,下载一个 PDF 文件可能需要不到一秒钟的时间。你看,现在一个PDF文件是否被线性化并不重要。由于是否不需要线性化,实现线性化的PDF需要做很多工作,所以没有开源库可以做到。

    如果非要制作线性化的PDF,我觉得只能用Adobe Acrobat来做。

    PS:我正在为我工​​作了两个多月的公司开发线性化 PDF 生成功能。所以我可以说没有开源开发者会去做,因为大多数时候它是非常无聊和无用的。我这样做的原因是:公司给我发工资。 π_π

    【讨论】:

    • qpdf 呢? (qpdf --linearize in.pdf out.pdf)
    猜你喜欢
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2018-03-20
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 2023-01-12
    相关资源
    最近更新 更多