you can take a look at the source of 

org/apache/pdfbox/pdmodel/interactive/form/PDAppearance.java for the current 
version or 
org/apache/pdfbox/pdmodel/interactive/form/PDAppearanceString.java if you are 
working with trunk


BR
Maruan

Am 15.10.2014 um 17:03 schrieb Rajeev Menon <[email protected]>:

> I did a lot of search, couldn't find any sample code. The closest I can get
> is the following.
> 
> fldPD.getWidget().getAppearance()
> 
> Please share any code sample you  have.
> 
> I got the following code that makes the font color red, but again until I
> click the field the text isn't showing.
> 
>                        COSDictionary dict = fldPD.getDictionary();
>                        COSString defaultAppearance = (COSString)
> dict.getDictionaryObject(COSName.DA);
>                        if (defaultAppearance != null)
>                            dict.setString(COSName.DA,
> defaultAppearance.getString() + " 1 0 0 rg ");
> 
> 
> Thanks, Reevs.
> 
> On Wed, Oct 15, 2014 at 9:11 AM, Maruan Sahyoun <[email protected]>
> wrote:
> 
>> Hi,
>> 
>> when you look at the field the presentation is determined by the fields
>> appearance. When you click into the field the PDF Viewing application takes
>> over and uses the fields value.
>> 
>> When you fill a field using PDFBox (or any other PDF lib/tool) the value
>> is taken and from that the appearance is generated. PDFBox doesn't
>> currently support automatic line wrapping (but we are working on it for the
>> 2.0 release).
>> 
>> As a workaround you can regenerate the appearance after the value has been
>> set and the (insufficient) appearance has been generated.
>> 
>> In principal for that you need to
>> 
>> # get the field
>> # get the field appearance
>> # get the fields bounding box
>> # add some padding
>> # calculate additional line breaks by using  -> float width =
>> font.getStringWidth(text.substring(start,i)) / 1000 * fontSize;
>> # set the annotation
>> 
>> BR
>> Maruan
>> 
>> Am 15.10.2014 um 14:57 schrieb Rajeev Menon <[email protected]>:
>> 
>>> I tried the string with the "\n" and it successfully inserted new lines
>> in
>>> the multi-line field in the PDF Form.
>>> 
>>> However, the text in a line that is too long doesn't automatically wrap
>> to
>>> next line. When I click in the field, the text wraps to next line and if
>> I
>>> click outside the field, the text shows as single line (cutting off the
>>> content that cannot fit in the field).
>>> 
>>> Is there anyway to fix this issue?
>>> 
>>> On Tue, Oct 14, 2014 at 7:55 PM, Rajeev Menon <[email protected]>
>>> wrote:
>>> 
>>>> Thx Mauran. I didn't know that approach will work. I will try it.
>>>> 
>>>> 
>>>> On Tuesday, October 14, 2014, Maruan Sahyoun <[email protected]>
>>>> wrote:
>>>> 
>>>>> Hi,
>>>>> 
>>>>> just pass it with the line breaks within the string and make sure the
>>>>> multiline property for the field is set.
>>>>> 
>>>>> Maruan
>>>>> 
>>>>> Am 14.10.2014 um 21:07 schrieb Rajeev Menon <[email protected]>:
>>>>> 
>>>>>> Hello,
>>>>>> 
>>>>>> I am using PDFBox to populate data on a PDF form (AcroForm). Here is a
>>>>>> sample code that I am using to fill the data on to the PDF.
>>>>>> 
>>>>>>  public void fillPDF(HashMap<String, String> mpData) {
>>>>>>      try {
>>>>>>          PDDocumentCatalog docCatalog = pdfDoc.getDocumentCatalog();
>>>>>>          PDAcroForm acroForm = docCatalog.getAcroForm();
>>>>>> 
>>>>>>          Iterator<Entry<String, String>> itrData =
>>>>>> mpData.entrySet().iterator();
>>>>>>          while (itrData.hasNext()) {
>>>>>>              Entry<String, String> entryData = itrData.next();
>>>>>>              PDField fldPD = acroForm.getField(entryData.getKey());
>>>>>>              if (fldPD!=null) {
>>>>>>                  fldPD.setValue(entryData.getValue());
>>>>>>              }
>>>>>>          }
>>>>>>      } catch (Exception e) {
>>>>>>          e.printStackTrace();
>>>>>>      }
>>>>>> 
>>>>>>  }
>>>>>> 
>>>>>> 
>>>>>> If one of the strings is "First line \n Second line \n Third line",
>> how
>>>>> do
>>>>>> I populate this text to the PDF so that each piece of text will be on
>> a
>>>>> new
>>>>>> line in the field. Please advise.
>>>>>> 
>>>>>> Thanks.
>>>>>> Reevs.
>>>>> 
>>>>> 
>> 
>> 

Reply via email to