Hi,

> Am 10.07.2015 um 16:06 schrieb jarrod <[email protected]>:
> 
> Evan,
> 
> I tested doing the same thing but decided it wasn't a very good solution in 
> my case. There are a lot of fields to modify over multiple pages across 
> numerous pdf's that are updated annually. Additionally, in my case the length 
> of text can be fairly dynamic and fixing a font could be problematic for 
> users doing manual data entry/correction. Thanks for your added input. 
> Hopefully Mr Sahyoun has a solution for us.

I had a quick look. The issue is not that the autosizing doesn't work. It's the 
difference in calculating the available field size. Unfortunately, as this is 
not documented in the PDF spec one has to compare the content generated by 
Adobe and handle it from there. (e.g. Adobe adds padding to the fields bounding 
box but only to a certain limit, there are some edge cases ….)  Anyway, I think 
there will can achieve a result which is closer to what Adobe achieves using 
the data file and templates provided.

Do you have to stay on 1.8.x or would you be able to work with the 
2.0.0-SNAPSHOT version? We are also planning to have an RC out soon.

As I'm on travel it will be start of next week until I can handle it.

BR
Maruan


> 
> Thanks,
> 
> Jarrod
> --------------------------------------------
> On Fri, 7/10/15, Evan Williams <[email protected]> wrote:
> 
> Subject: Re: Font AutoSize Issue
> To: [email protected]
> Date: Friday, July 10, 2015, 8:35 AM
> 
> I actually have seen the exact same
> behavior in 1.8.9.
> 
> I dealt with it by just fixing the forms in Acrobat so that
> the fonts have
> a fixed size, because I did not have the time or the energy
> to deal with
> it. But autosized fonts definitely did not work for me when
> filling out
> forms in 1.8.9.
> 
> If it would be helpful and Jarrod does not have a good
> example document I
> would be happy to publish one of mine.
> 
> Thanks.
> 
> On Fri, Jul 10, 2015 at 4:19 AM, Maruan Sahyoun <[email protected]>
> wrote:
> 
>> Hi,
>> 
>> 
>>> Am 10.07.2015 um 00:32 schrieb jarrod <[email protected]>:
>>> 
>>> I'm evaluating pdfbox for filling in form fields
> from a template pdf
>> file.
>>> 
>>> From what I can tell, pdfbox does not support
> autosize font. While it
>> will retain the font size 0 setting, the text that is
> placed into the
>> fields is not autosized (until you alter the value
> manually).
>>> 
>>> Option A:
>>> Is there some kind of command to execute before
> saving the pdf to force
>> it to autosize?
>>> 
>>> Option B:
>>> Do some math and calculate a new font size. I've
> done this (see code
>> below) but you obviously lose the ability to autosize
> if the user ends up
>> modifying a value.
>>> Is there a way to do this math and set the initial
> display font size but
>> leave the DA alone with autosize set?
>>> I'm guessing this would be done by setting some
> other COSName String
>> similar to setting the COSName.DA. However, I can't
> find much information
>> on these.
>> 
>> 
>> which version of PDFBox are you using? Do you have a
> sample empty PDF and
>> filled out one together with some code how you do the
> form filling?
>> 
>> Both 1.8.9 and 2.0.0-SNAPSHOT should support
> autosizing.
>> 
>> BR
>> Maruan
>> 
>>> 
>>> Any help is appreciated. Code is below;
>>> 
>>> //item.field_value is the value I'm sticking into
> the form field
>>> 
>>> if (field instanceof PDTextbox)
>>> {
>>>        int len =
> item.field_value.length();
>>>        if (len>2)
>>>        {
>>>            
>    COSDictionary dict =
> field.getDictionary();
>>>            
>    COSString defaultAppearance = (COSString)
>> dict.getDictionaryObject(COSName.DA);
>>>            
>    if (defaultAppearance != null)
>>>            
>    {
>>>              
>          //split the DA to
> grab the font size
>>>              
>          String[] da =
>> defaultAppearance.getString().split(" ");
>>>              
>          List<String>
> da2 = new ArrayList<String>();
>>> 
>>>              
>          //loop through and
> remove any empty strings
>>>              
>          // because for some
> reason when the font size is 0
>> there is an empty extra string in the way
>>>              
>          for(int x=0;
> x<da.length; x++)
>>>              
>          {
>>>              
>              
>    if (da[x].length()!=0)
>>>              
>                
>          da2.add(da[x]);
>>>              
>          }
>>>              
>          //Move back to a
> String[] (I'm new to java)
>>>              
>          da =
> da2.toArray(da);
>>> 
>>>              
>          if (da.length >=
> 2) //only process if there are at
>> least two characters
>>>              
>          {
>>>              
>              
>    if (da[1].equals("0")) //If font size is
>> actually autosized
>>>              
>              
>    {
>>>              
>                
>          COSArray
> fieldAreaArray =
>> (COSArray) dict.getDictionaryObject(COSName.RECT);
>>>              
>                
>          PDRectangle rect =
> new
>> PDRectangle(fieldAreaArray);
>>>              
>                
>          float width =
> rect.getWidth();
>>> 
>>>              
>                
>          int size =
> (int)(width / len *
>> 1.92); //doing stupid math to estimate new font size
>>> 
>>>              
>                
>          if (size > 12)
>>>              
>                
>              
>    size = 12;
>>>              
>                
>          else if (size <
> 8)
>>>              
>                
>              
>    size = 8;
>>> 
>>>              
>                
>          String customSize =
> "/Helv " +
>> size + " Tf 0 g";
>>> 
>>>              
>                
>      
>    dict.setString(COSName.DA,
>> customSize); //Set the new font size here
>>>              
>                
>          field = new
> PDTextbox(acroForm,
>> dict); //Create as a new field (as seen in other
> threads)
>>>              
>              
>    }
>>>              
>          }
>>>            
>    }
>>>        }
>>> }
>>> field.setValue(item.field_value); //Set the field
> value
>>> 
>>> Jarrod
>>> 
>>> 
> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>> 
>> 
>> 
>> 
> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>> 
>> 
> 
> 
> -- 
> *Evan Williams*
> Sr. Software Engineer
> [email protected]
> 
> *www.ZappRx.com <http://www.zapprx.com/>*
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to