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]

