Hi, > Am 10.07.2015 um 15:35 schrieb Evan Williams <[email protected]>: > > 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.
please do so mentioning the field in question and the value you wanted to set. BR Maruan > > 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]

