我在我的应用程序中使用PDFBox来修改现有的PDF文件。 我需要将条形码放在PDF文档的第一页。
首先我创建带有插入条形码的新PDF文件:
PDDocument document = new PDDocument();
PDXObjectImage ximage = new PDPixelMap(document, awtImage);
PDPage pag = new PDPage(new PDRectangle(ximage.getWidth(), ximage.getHeight()));
document.addPage(pag);
PDPageContentStream stream = new PDPageContentStream(document, pag, false, false);
stream.drawXObject(ximage, 0, 0, ximage.getWidth(), ximage.getHeight());
stream.close();
然后我尝试将其作为新图层放入现有PDF:
Point barlocation = new Point(0,0);
float Height = page.getMediaBox().getHeight();
float Width = page.getMediaBox().getWidth();
barlocation.setLocation(Width - pag.getMediaBox().getWidth(), Height - pag.getMediaBox().getHeight()); //I need to place it in the top right corner
LayerUtility layerUtility = new LayerUtility(doc);
List bigPages = doc.getDocumentCatalog().getAllPages();
PDXObjectForm firstForm = layerUtility.importPageAsForm(document, 0);
AffineTransform affineTransform = new AffineTransform();
affineTransform.translate(barlocation.x , barlocation.y);
layerUtility.appendFormAsLayer((PDPage) bigPages.get(0), firstForm, affineTransform, "barcode layer");
doc.save(path);
doc.close();
因此它适用于PDF文档ver 1.5(在MS Word 2010/2013中创建)。但是PDF文档版本1.6的位置和插入图层的大小是错误的(我无法发布图像,所以你可以在这里看到结果:http://img4.imagetitan.com/img.php?image=11_capture567.png
我应该改变什么?感谢阅读,抱歉我的英语不好。