You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@pdfbox.apache.org by Rajeev Menon <ra...@gmail.com> on 2014/10/16 19:49:49 UTC

Retrieve the format of a date field in PDF

All,

I am trying to find if a field is of type Date and if yes, what is the
format (like yyyymmdd) of the date (in a Flat PDF). I tried the following
lines of code to see if anything helps, but no luck.

                if (fldPD!=null) {

System.out.println("*************"+entryData.getKey()+"*****************");
                    System.out.println("subtype =
"+fldPD.getWidget().getSubtype());
                    System.out.println("annotName =
"+fldPD.getWidget().getAnnotationName());
                    System.out.println("hilit =
"+fldPD.getWidget().getHighlightingMode());
                    System.out.println("fldFlags = "+fldPD.getFieldFlags());
                    System.out.println("contents =
"+fldPD.getWidget().getContents());
                    System.out.println("appeStream =
"+fldPD.getWidget().getAppearanceStream());
                    //fldPD.setValue(entryData.getValue());
                }

Please help me here.

Thanks,

Re: Retrieve the format of a date field in PDF

Posted by Maruan Sahyoun <sa...@fileaffairs.de>.
Hi Rajeev,

unfortunately not as the whole content of the COSString is the JavaScript call. AFDate_FormatEx is a JavaScript method defined within Adobe Acrobat taking the format as a parameter.

BR

Maruan

Am 17.10.2014 um 15:58 schrieb Rajeev Menon <ra...@gmail.com>:

> Hi Maruan,
> 
> Thanks for putting me in the right direction. I tried the following to get
> the details in the actions object.
> 
>                System.out.println("actions K:
> "+field.getActions().getCOSDictionary().getDictionaryObject("K"));
>                System.out.println("actions F:
> "+field.getActions().getCOSDictionary().getDictionaryObject("F"));
> 
> Here is the content of the COSDictionary.
> 
> COSDictionary{
> (COSName{F}:COSDictionary{(COSName{JS}:COSString{AFDate_FormatEx("*yyyymmdd*");})
> 
> (COSName{S}:COSName{JavaScript}) })
> (COSName{K}:COSDictionary{(COSName{JS}:COSString{AFDate_Keysd");})
> (COSName{S}:COSName{JavaScrit}) })
> }
> Is there any direct method to extract the "yyyymmdd" instead of doing
> string operations on this text?
> 
> Thanks,
> Rajeev.
> 
> On Thu, Oct 16, 2014 at 2:01 PM, Maruan Sahyoun <sa...@fileaffairs.de>
> wrote:
> 
>> Hi Rajeev,
>> 
>> there is no such thing like a date field in PDF. Date fields are
>> represented as regular text field with some JavaScript (if you define them
>> in Acrobat). You can get the field actions with
>> 
>> 
>> http://pdfbox.apache.org/docs/1.8.6/javadocs/org/apache/pdfbox/pdmodel/interactive/form/PDField.html#getActions()
>> 
>> BR
>> Maruan
>> 
>> Am 16.10.2014 um 19:49 schrieb Rajeev Menon <ra...@gmail.com>:
>> 
>>> All,
>>> 
>>> I am trying to find if a field is of type Date and if yes, what is the
>>> format (like yyyymmdd) of the date (in a Flat PDF). I tried the following
>>> lines of code to see if anything helps, but no luck.
>>> 
>>>               if (fldPD!=null) {
>>> 
>>> 
>> System.out.println("*************"+entryData.getKey()+"*****************");
>>>                   System.out.println("subtype =
>>> "+fldPD.getWidget().getSubtype());
>>>                   System.out.println("annotName =
>>> "+fldPD.getWidget().getAnnotationName());
>>>                   System.out.println("hilit =
>>> "+fldPD.getWidget().getHighlightingMode());
>>>                   System.out.println("fldFlags =
>> "+fldPD.getFieldFlags());
>>>                   System.out.println("contents =
>>> "+fldPD.getWidget().getContents());
>>>                   System.out.println("appeStream =
>>> "+fldPD.getWidget().getAppearanceStream());
>>>                   //fldPD.setValue(entryData.getValue());
>>>               }
>>> 
>>> Please help me here.
>>> 
>>> Thanks,
>> 
>> 


Re: Retrieve the format of a date field in PDF

Posted by Rajeev Menon <ra...@gmail.com>.
Hi Maruan,

Thanks for putting me in the right direction. I tried the following to get
the details in the actions object.

                System.out.println("actions K:
"+field.getActions().getCOSDictionary().getDictionaryObject("K"));
                System.out.println("actions F:
"+field.getActions().getCOSDictionary().getDictionaryObject("F"));

Here is the content of the COSDictionary.

COSDictionary{
(COSName{F}:COSDictionary{(COSName{JS}:COSString{AFDate_FormatEx("*yyyymmdd*");})

(COSName{S}:COSName{JavaScript}) })
(COSName{K}:COSDictionary{(COSName{JS}:COSString{AFDate_Keysd");})
(COSName{S}:COSName{JavaScrit}) })
}
Is there any direct method to extract the "yyyymmdd" instead of doing
string operations on this text?

Thanks,
Rajeev.

On Thu, Oct 16, 2014 at 2:01 PM, Maruan Sahyoun <sa...@fileaffairs.de>
wrote:

> Hi Rajeev,
>
> there is no such thing like a date field in PDF. Date fields are
> represented as regular text field with some JavaScript (if you define them
> in Acrobat). You can get the field actions with
>
>
> http://pdfbox.apache.org/docs/1.8.6/javadocs/org/apache/pdfbox/pdmodel/interactive/form/PDField.html#getActions()
>
> BR
> Maruan
>
> Am 16.10.2014 um 19:49 schrieb Rajeev Menon <ra...@gmail.com>:
>
> > All,
> >
> > I am trying to find if a field is of type Date and if yes, what is the
> > format (like yyyymmdd) of the date (in a Flat PDF). I tried the following
> > lines of code to see if anything helps, but no luck.
> >
> >                if (fldPD!=null) {
> >
> >
> System.out.println("*************"+entryData.getKey()+"*****************");
> >                    System.out.println("subtype =
> > "+fldPD.getWidget().getSubtype());
> >                    System.out.println("annotName =
> > "+fldPD.getWidget().getAnnotationName());
> >                    System.out.println("hilit =
> > "+fldPD.getWidget().getHighlightingMode());
> >                    System.out.println("fldFlags =
> "+fldPD.getFieldFlags());
> >                    System.out.println("contents =
> > "+fldPD.getWidget().getContents());
> >                    System.out.println("appeStream =
> > "+fldPD.getWidget().getAppearanceStream());
> >                    //fldPD.setValue(entryData.getValue());
> >                }
> >
> > Please help me here.
> >
> > Thanks,
>
>

Re: Retrieve the format of a date field in PDF

Posted by Maruan Sahyoun <sa...@fileaffairs.de>.
Hi Rajeev,

there is no such thing like a date field in PDF. Date fields are represented as regular text field with some JavaScript (if you define them in Acrobat). You can get the field actions with

http://pdfbox.apache.org/docs/1.8.6/javadocs/org/apache/pdfbox/pdmodel/interactive/form/PDField.html#getActions()

BR
Maruan

Am 16.10.2014 um 19:49 schrieb Rajeev Menon <ra...@gmail.com>:

> All,
> 
> I am trying to find if a field is of type Date and if yes, what is the
> format (like yyyymmdd) of the date (in a Flat PDF). I tried the following
> lines of code to see if anything helps, but no luck.
> 
>                if (fldPD!=null) {
> 
> System.out.println("*************"+entryData.getKey()+"*****************");
>                    System.out.println("subtype =
> "+fldPD.getWidget().getSubtype());
>                    System.out.println("annotName =
> "+fldPD.getWidget().getAnnotationName());
>                    System.out.println("hilit =
> "+fldPD.getWidget().getHighlightingMode());
>                    System.out.println("fldFlags = "+fldPD.getFieldFlags());
>                    System.out.println("contents =
> "+fldPD.getWidget().getContents());
>                    System.out.println("appeStream =
> "+fldPD.getWidget().getAppearanceStream());
>                    //fldPD.setValue(entryData.getValue());
>                }
> 
> Please help me here.
> 
> Thanks,