【发布时间】:2014-12-03 02:13:12
【问题描述】:
我使用不同的工具(例如处理)来创建矢量图。这些图以单页或多页 pdf 的形式编写。我想使用 pdfbox 将这些图包含在一个类似报告的 pdf 中。
我当前的工作流程将这些 pdf 包含为带有以下伪代码的图像
PDDocument inFile = PDDocument.load(file);
PDPage firstPage = (PDPage) inFile.getDocumentCatalog().getAllPages().get(0);
BufferedImage image = firstPage.convertToImage(BufferedImage.TYPE_INT_RGB, 300);
PDXObjectImage ximage = new PDPixelMap(document, image);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.drawXObject(ximage, 0, 0, ximage.getWidth(), ximage.getHeight());
contentStream.close();
虽然这样可行,但它失去了矢量文件格式的优势,尤其是文件/大小与打印质量。
是否可以使用 pdfbox 将其他 pdf 页面作为嵌入对象包含在页面中(不作为单独的页面添加)?我可以吗?使用 PDStream?我希望像 pdflatex 这样的解决方案能够将 pdf 数字嵌入到新的 pdf 文档中。
对于该任务,您可以推荐哪些其他 Java 库?
【问题讨论】:
-
是否可以使用 pdfbox 将其他 pdf 页面作为嵌入对象包含在页面中 - 应该可以。 PDF 格式允许使用所谓的 form xobjects 来充当此类嵌入对象。不过,我没有看到明确的实现,但该过程与
PDFMergerUtility所做的足够相似。 您可以为该任务推荐哪些其他 Java 库? - 任何通用库都应该使您能够做到这一点,iText 和 PdfClown 都明确支持类似的东西。 -
@mkl 对,这应该是一个相当普遍的任务。查看
PDFMergerUtility并将 pdf 添加为单独的页面。 iText 不是一个选项,因为它的最新版本的许可证更改。不过会看看 PdfClown。感谢您指出它。