当前位置: 首页 > 知识库问答 >
问题:

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

方通
2023-03-14

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

非常感谢任何帮助。

共有1个答案

冯祺
2023-03-14

您可以使用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<PDAnnotationWidget> 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测试TestCreateImpleImageButton)

由于您没有提到任何版本要求,我认为您指的是当前的PDFBox2.0.x。

 类似资料:
  • 我想使用java netbeans从pdf中的按钮中获取图像图标,并将其放在某个面板中。然而,我在这里打了一块砖头。我正在使用PDFBox作为我的PDF导出器,我似乎无法理解。我已经成功地从表单字段读取,但是只要我尝试在PDFBox中找到它,就没有按钮提取器。我应该如何制作它?是否可以使用此方法,或者是否有其他方法。提前致谢。 编辑:我已经发现使用使用此代码的示例实用程序的提取时间: 但是我仍然无

  • 当我试图使用pdfBox绘制png图像时,页面保持空白。有什么方法可以使用PDFBOX插入png图像吗?

  • 问题内容: 我想使用Apache PDFBox 1.8.8创建一个包含Unicode字符的PDF,但是我对支持什么和不支持什么感到困惑。 请有人澄清。另外,如果这是一个已修复的错误,则有人可以告诉我何时可能发布PDFBox的下一个版本。 谢谢。 问题答案: 基本上,您链接到的所有答案都是正确的。您必须记住它们分别引用哪个PDFBox版本。 _关于这个答案 在2.0.0之前的版本(直到当前的1.8.

  • 我正在尝试将pdf字段与行中的第一个字段对齐。我能得到磁场和它的位置。我也可以在本地更改它,但当我保存pdf时,字段显示在同一位置。以下是代码:

  • 目前,我有3个单选按钮,我试图放置在我的2个输入字段旁边使用引导。我想把它们放在我的输入字段的同一行,但是它一直与这些输入字段的标签对齐。 有人知道我怎样才能把路线撞倒吗? 我的html: 这是我的https://embed.plnkr.co/YIFin0fUchhSyZHiWUO6/

  • 我在将存在acrofield从一个pdf导入另一个pdf时遇到问题。这两个pdf相似。我尝试导入并保存文件(下面的代码)。如果我从文件系统打开它,我看不到更改,但如果我用pdfbox打开它,我看到之前插入的acrofile。我注意到文件大小增加了,但当我打开它时,我看不到可填充的字段。 提前谢谢你