我想用Apache PDFBox在PDF上绘制矢量图像.
这是我用来绘制常规图像的代码
PDPage page = (PDPage) document.getDocumentCatalog().getAllPages().get(1);
PDPageContentStream contentStream = new PDPageContentStream(document, page, true, true);
BufferedImage _prevImage = ImageIO.read(new FileInputStream("path/to/image.png"));
PDPixelMap prevImage = new PDPixelMap(document, _prevImage);
contentStream.drawXObject(prevImage, prevX, prevY, imageWidth, imageHeight);
Run Code Online (Sandbox Code Playgroud)
如果我使用svg或wmf图像而不是png,则生成的PDF文档会损坏.
我希望图像成为矢量图像的主要原因是使用PNG或JPG图像看起来很糟糕,我认为它会以某种方式压缩,因此看起来很糟糕.使用矢量图像时,这不应该发生(好吧,当我在Inkscape中将svg路径导出为PDF时,它不会发生,矢量路径会被保留).
有没有办法使用Apache PDFBox将svg或wmf(或其他向量)绘制成PDF?
我现在正在使用PDFBox 1.8,如果这很重要.
我使用不同的工具(例如处理)来创建矢量图。这些图被写成单页或多页 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();
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但它失去了矢量文件格式的优点,特别是文件/大小与打印质量。
是否可以使用 pdfbox 将其他 pdf 页面作为嵌入对象包含在页面中(不添加为单独的页面)?例如,我可以使用 PDStream 吗?我更喜欢像 pdflatex 这样的解决方案能够将 pdf 数字嵌入到新的 pdf 文档中。
您可以推荐哪些其他 Java 库来完成该任务?