代码之家  ›  专栏  ›  技术社区  ›  Don B

如何在Java中使用pdfbox 2.0创建线性化(快速网络视图)pdf?

  •  3
  • Don B  · 技术社区  · 8 年前

    我有一些.jpg文件,用来创建pdf。我已经花了好几个小时搜索了,但没有找到任何方法来线性化pdf!我很难找到任何关于如何做到这一点的文档或指南,现在我希望能在这里获得一些帮助。我还查看了pdfbox 2.0 API文档,但没有找到任何有用的东西。我以前在ocasion上使用过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();
            }
        }
    }
    

    非常感谢您的任何建议!

    用解决方案编辑:

    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

    2 回复  |  直到 8 年前
        1
  •  1
  •   Tilman Hausherr    8 年前

    很抱歉带来坏消息,但PDFBox中不提供,也不会提供,请参阅讨论 here 。我建议您使用后处理文件 qpdf 相反

        2
  •  1
  •   Gold Paladin    7 年前

    原因可能是:“支持线性化PDF将花费大量工作,但现在大部分时间都是无用的。”

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

    如果你必须制作线性化的PDF,我认为你只能使用Adobe Acrobat来做。

    PS:我正在为我工作超过2个月的公司开发线性化PDF生成功能。所以我可以说没有开源开发人员会这么做,因为它在大多数情况下都非常无聊和无用。我这样做的原因是:公司付给我薪水_