我有一些.jpg文件,正在使用它们创建pdf。我已经搜索了几个小时,但没有太多运气找到如何使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解决了我的问题。以下是一个例子:
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文档,版本1.4
400dpi_90.pdf未线性化
400dpi_90-out.pdf: PDF文档,版本1.6
400dpi_90-out.pdf没有线性化错误