Trying to do this again... Has there been some developments in this regard
in the new versions of PDFBox since 2016 that will make it easier to import
an image as the icon of a button field, by any chance?

On Tue, Oct 11, 2016 at 12:39 PM Maruan Sahyoun <sahy...@fileaffairs.de>
wrote:

> Hi
> > Am 11.10.2016 um 11:59 schrieb Gilad Denneboom <
> gilad.denneb...@gmail.com>:
> >
> > Do you mean adding something like this?
> > ap.getStream().setItem(COSName.FRM, objectForm);
> >
>
> no, you'd need to generate a new content stream for the Normal Appearance
> using
>
>
> http://pdfbox.apache.org/docs/2.0.3/javadocs/org/apache/pdfbox/pdmodel/PDPageContentStream.html#PDPageContentStream(org.apache.pdfbox.pdmodel.PDDocument,%20org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceStream)
>
> With that in place you could then use
> PDPageContentStream.drawImage(PDImageXObject image, Matrix matrix)
>
> BR
> Maruan
>
>
> >
> > On Tue, Oct 11, 2016 at 11:34 AM, Maruan Sahyoun <sahy...@fileaffairs.de
> >
> > wrote:
> >
> >> Hi,
> >>
> >>> Am 11.10.2016 um 11:29 schrieb Gilad Denneboom <
> >> gilad.denneb...@gmail.com>:
> >>>
> >>> Here's what I have so far (I skipped the scaling part, just to see if I
> >> can
> >>> get any kind of results...):
> >>>
> >>>                   // - load your image as a PDXObjectImage
> >>>                   BufferedImage bImg = ImageIO.read(new
> >>> File(imageFilePath));
> >>>                   PDXObjectImage image = new PDJpeg(doc, bImg);
> >>>                   COSStream s = image.getCOSStream();
> >>>
> >>>                   // - create a PDXObjectForm with the image as a
> >>> resource entry
> >>>                   PDXObjectForm objectForm = new PDXObjectForm(s);
> >>>                   PDResources resources = new PDResources();
> >>>                   resources.addXObject(objectForm, "Im0");
> >>>                   objectForm.setResources(resources);
> >>>
> >>>                   // - put that into the /I key of the fields MK entry
> >>>
> >>> f.getWidget().getAppearanceCharacteristics().getDictionary().setItem(
> >> COSName.I,
> >>> objectForm);
> >>>
> >>>                   // - add the PDXObjectForm you created above to the
> >>> Resources Entry of the appearance stream
> >>>                   PDAppearanceStream ap = (PDAppearanceStream)
> >>> f.getWidget().getAppearance().getNormalAppearance().get("default");
> >>>                   Map<String, PDXObject> xobjectsMap =
> >>> ap.getResources().getXObjects();
> >>>                   xobjectsMap.put("FRM", objectForm);
> >>>
> >>> f.getWidget().getAppearance().getNormalAppearance().put("default", ap);
> >>>
> >>> Do you see what I'm doing wrong, because the button is still blank
> when I
> >>> open the edited file? …
> >>
> >> from the code you are not setting the appearance stream content. So the
> >> definitions are in place but they are not used.
> >>
> >> BR
> >> Maruan
> >>
> >>
> >>
> >>> I got the keys ("Im0", "FRM") from inspecting a sample file I created
> in
> >>> Acrobat.
> >>>
> >>> On Tue, Oct 11, 2016 at 10:26 AM, Maruan Sahyoun <
> sahy...@fileaffairs.de
> >>>
> >>> wrote:
> >>>
> >>>> Hi,
> >>>>
> >>>>> Am 11.10.2016 um 10:07 schrieb Gilad Denneboom <
> >>>> gilad.denneb...@gmail.com>:
> >>>>>
> >>>>> Thank for the info, Maruan. I implemented some of what you've
> described
> >>>>> already, and will try to do the rest next...
> >>>>> Maybe this is a a good "feature" request for future versions?
> >>>>
> >>>> yes it is - and I'm planning to add that if I find the time but I'm
> >>>> currently very limited.
> >>>>
> >>>> If you'd like to share some of your code please do so - would be good
> to
> >>>> have a new ticket for that by then.
> >>>>
> >>>> Maruan
> >>>>
> >>>>
> >>>>
> >>>>>
> >>>>> On Tue, Oct 11, 2016 at 8:30 AM, Maruan Sahyoun <
> >> sahy...@fileaffairs.de>
> >>>>> wrote:
> >>>>>
> >>>>>> Hi Gilad,
> >>>>>>
> >>>>>>> Am 10.10.2016 um 23:28 schrieb Gilad Denneboom <
> >>>>>> gilad.denneb...@gmail.com>:
> >>>>>>>
> >>>>>>> I posted this question to SO
> >>>>>>> <http://stackoverflow.com/questions/39958843/how-to-
> >>>>>> import-an-icon-to-a-button-field-in-a-pdf-using-pdfbox>,
> >>>>>>> but thought I might get better traction here...
> >>>>>>>
> >>>>>>> I'm looking for a way to set the normal appearance of a button
> field
> >>>> in a
> >>>>>>> PDF file to an image file, but am not finding any information about
> >>>> this
> >>>>>>> process. The closest I could find was the opposite, ie how to
> extract
> >>>> an
> >>>>>>> icon from a button field to a stand-alone image file, here: How
> can i
> >>>>>>> extract image from button icon in PDF using Apache PDFBox?
> >>>>>>> <http://stackoverflow.com/questions/33295483/how-can-i-
> >>>>>> extract-image-from-button-icon-in-pdf-using-apache-pdfbox>
> >>>>>>
> >>>>>> currently PDFBox doesn't have a high level API to set that. The
> >> easiest
> >>>> is
> >>>>>> to create a sample with Acrobat and recreate that.
> >>>>>>
> >>>>>> The basics steps are
> >>>>>>
> >>>>>> - load your image as a PDXObjectImage
> >>>>>> - create a PDXObjectForm with the image as a resource entry
> >>>>>> - put that into the /I key of the fields MK entry
> >>>>>>
> >>>>>> Now this gives you the "Design" part so Readers can use that to
> >>>> regenerate
> >>>>>> the appearance stream. At that point in time the Icon is not yet
> >>>> visible as
> >>>>>> it's not part of the appearance stream
> >>>>>>
> >>>>>> For the appearance stream
> >>>>>>
> >>>>>> - add the PDXObjectForm you created above to the Resouces Entry of
> the
> >>>>>> appearance stream
> >>>>>> - call the PDXObjectForm in the appearance stream with a
> >> transformation
> >>>>>> matrix before to scale the PDXObjectForm to fit the buttons
> dimension.
> >>>>>>
> >>>>>> BR
> >>>>>> Maruan
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>>
> >>>>>>> Thanks in advance!
> >>>>>>
> >>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>> To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org
> >>>>>> For additional commands, e-mail: users-h...@pdfbox.apache.org
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org
> >>>> For additional commands, e-mail: users-h...@pdfbox.apache.org
> >>>>
> >>>>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org
> >> For additional commands, e-mail: users-h...@pdfbox.apache.org
> >>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org
> For additional commands, e-mail: users-h...@pdfbox.apache.org
>
>

Reply via email to