java - 如何在 Java 中使用 pdfbox 2.0 创建线性化(快速 Web View )pdf?

标签 java pdf pdfbox linearization

我有一些用于创建 pdf 的 .jpg 文件。我一直在寻找几个小时,但没有找到任何线性化 pdf 的方法!我很难找到任何关于如何做的文档或指南,现在我希望能在这里得到一些帮助。我还查看了 pdfbox 2.0 API 文档,但找不到任何有用的信息。我以前偶尔使用过 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,它解决了我的问题。这是一个例子:

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

上面的结果如下图所示:

400dpi_90.pdf:PDF 文档,版本 1.4 400dpi_90.pdf 未线性化 400dpi_90-out.pdf:PDF文档,1.6版 400dpi_90-out.pdf:没有线性化错误

最佳答案

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

关于java - 如何在 Java 中使用 pdfbox 2.0 创建线性化(快速 Web View )pdf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39792694/

相关文章:

pdfbox - java.lang.NoClassDefFoundError : Could not initialize class org. apache.pdfbox.pdmodel.font.PDFont

java - 使用 PDFBox 缩放 PDF 页面

java - 从 Java(Web 应用程序)针对 Active Directory 2016 进行身份验证

java - Grails-找不到JDK

java - 使用 iText 将隐藏文件嵌入 PDF

css - 带有倾斜标题的 PDF 表格

c# - 如何从流中加载 PDF 并添加文件附件?

java - 两行字母互换,Adobe Reader 可以完成这项工作

java - 如何在Java中正确返回金钱双变量

java - 如何将我的构建器对象复制到另一个对象并修改其中的几个字段?