如何使用PDFBox将图标导入PDF中的按钮字段?

我正在寻找一种方法来将PDF文件中按钮字段的正常外观设置为图像文件,但是没有找到有关此过程的任何信息。

我能找到的最接近的是相反的,即如何从按钮字段中提取图标到独立的图像文件,这里: 我如何使用Apache PDFBox从PDF中的按钮图标中提取图像?

我更喜欢使用PDFBox来完成这项任务。

任何帮助是极大的赞赏。

您可以使用PDFBox创建一个带有图像外观的按钮,如下所示:

try ( InputStream resource = getClass().getResourceAsStream("2x2colored.png"); PDDocument document = new PDDocument() ) { BufferedImage bufferedImage = ImageIO.read(resource); PDImageXObject pdImageXObject = LosslessFactory.createFromImage(document, bufferedImage); float width = 10 * pdImageXObject.getWidth(); float height = 10 * pdImageXObject.getHeight(); PDAppearanceStream pdAppearanceStream = new PDAppearanceStream(document); pdAppearanceStream.setResources(new PDResources()); try (PDPageContentStream pdPageContentStream = new PDPageContentStream(document, pdAppearanceStream)) { pdPageContentStream.drawImage(pdImageXObject, 0, 0, width, height); } pdAppearanceStream.setBBox(new PDRectangle(width, height)); PDPage page = new PDPage(PDRectangle.A4); document.addPage(page); PDAcroForm acroForm = new PDAcroForm(document); document.getDocumentCatalog().setAcroForm(acroForm); PDPushButton pdPushButton = new PDPushButton(acroForm); pdPushButton.setPartialName("ImageButton"); List widgets = pdPushButton.getWidgets(); for (PDAnnotationWidget pdAnnotationWidget : widgets) { pdAnnotationWidget.setRectangle(new PDRectangle(50, 750, width, height)); pdAnnotationWidget.setPage(page); page.getAnnotations().add(pdAnnotationWidget); PDAppearanceDictionary pdAppearanceDictionary = pdAnnotationWidget.getAppearance(); if (pdAppearanceDictionary == null) { pdAppearanceDictionary = new PDAppearanceDictionary(); pdAnnotationWidget.setAppearance(pdAppearanceDictionary); } pdAppearanceDictionary.setNormalAppearance(pdAppearanceStream); } acroForm.getFields().add(pdPushButton); document.save(new File(RESULT_FOLDER, "imageButton.pdf")); } 

( CreateImageButton.java test testCreateSimpleImageButton

由于您没有提及任何版本要求,我认为您的意思是当前的PDFBox 2.0.x.