我有一些用于创建 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