我有一些.jpg文件,我正在使用它来创建一个pdf。我已经找了几个小时了,没有多少运气找到了如何线性化的pdf!我很难找到任何关于如何做的文档或指南,现在我希望能在这里得到一些帮助。我还查看了pdfbox2.0API文档,但没有发现任何有用的东西。我以前用过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();
}
}
}任何建议都是非常感谢的!
编辑解决方案:我已经尝试了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
发布于 2016-09-30 17:31:40
发布于 2017-09-19 03:07:01
不幸的是,正如我所知,没有开源库支持生成线性化的PDF文件。
原因可能是:“支持线性化PDF将花费大量的工作,但它现在大部分时间都是无用的。”
我们知道,线性化PDF设计的时间(1996年)的网络速度非常低。因此,当在web上打开时,线性化PDF对于快速查看第一页和快速跳转到PDF的任意页面是必要的,尽管生成线性化PDF的实现非常复杂。但是现在的网络速度要快得多。大多数PDF文件的大小小于10 MB,下载一个PDF文件可能需要不到1秒。你看,现在一个PDF文件是否线性化并不重要。由于是否不需要线性化,而实现线性化PDF将需要大量的工作,因此没有开源库。
如果你必须做一个线性化的PDF,我认为你只能使用Acrobat来完成它。
PS:我正在为我工作超过2个月的公司开发线性PDF生成功能。因此,我可以说,没有开放源码开发人员会这样做,因为它是非常无聊和无用的大部分时间。我这么做的原因是:公司付给我薪水。π_π
https://stackoverflow.com/questions/39792694
复制相似问题