pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jarrod <xho...@yahoo.com.INVALID>
Subject Re: Font AutoSize Issue
Date Fri, 10 Jul 2015 14:06:52 GMT
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.

Thanks,

Jarrod
--------------------------------------------
On Fri, 7/10/15, Evan Williams <evan.williams@zapprx.com> wrote:

 Subject: Re: Font AutoSize Issue
 To: users@pdfbox.apache.org
 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 <sahyoun@fileaffairs.de>
 wrote:
 
 > Hi,
 >
 >
 > > Am 10.07.2015 um 00:32 schrieb jarrod <xhozst@yahoo.com.INVALID>:
 > >
 > > 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: users-unsubscribe@pdfbox.apache.org
 > > For additional commands, e-mail: users-help@pdfbox.apache.org
 > >
 >
 >
 >
 ---------------------------------------------------------------------
 > To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
 > For additional commands, e-mail: users-help@pdfbox.apache.org
 >
 >
 
 
 -- 
 *Evan Williams*
 Sr. Software Engineer
 evan.williams@zapprx.com
 
 *www.ZappRx.com <http://www.zapprx.com/>*
 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: users-help@pdfbox.apache.org


Mime
View raw message