簡體   English   中英

如何使用PDFBox將圖標導入PDF中的按鈕字段?

[英]How to import an icon to a button field in a PDF using PDFBox?

我正在尋找一種將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<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測試testCreateSimpleImageButton

由於您沒有提到任何版本要求,因此我假設您的意思是當前的PDFBox2.0.x。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM