pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Barry Neu <barry....@gmail.com>
Subject Re: PDField - How to calculate the pixel capacity of a text field?
Date Thu, 16 Jun 2016 21:12:22 GMT
Given an earlier reply from Maruan:
"you can get the width of a string using PDFont.getStringWidth(String text)"

Is it not true one needs to know the font size to determine the string width?

My goal is to determine if a field value will fit in a field at the specified font size on
the form.
...
//get field size - 1 unit = 1/72 inch
float fieldSize = field.getWidgets().get(0).getRectangle().getWidth();

//get field value size
PDFont font = PDType1Font.HELVETICA;
float fieldLength = font.getStringWidth(someValue);
...

1. How can an accurate length be calculated without a Font Size??
2. And, the getStringWidth() method returns a value such as 2780.0 for a 5 character field
.. what does that number represent?

Thanks again.



> On Jun 16, 2016, at 2:19 PM, Tilman Hausherr <THausherr@t-online.de> wrote:
> 
> Am 16.06.2016 um 20:56 schrieb Barry Neu:
>> Thank you Tilman.
>> 
>> I was poking around trying to find where to get the Font and Font size for a PDTextField
but not having any luck.
>> Is it in the CosDictionary or what is the proper way to find those 2 pieces of information?
> 
> getDefaultAppearance()
> 
> you would have to parse that.
> 
> I see there's also getDefaultAppearanceString() which is more advanced, but this isn't
public. See the source code of PDDefaultAppearanceString to see what can be done with that,
and make a copy for yourself.
> 
>    PDDefaultAppearanceString getDefaultAppearanceString() throws IOException
>    {
>        COSString da = (COSString) getInheritableAttribute(COSName.DA);
>        PDResources dr = getAcroForm().getDefaultResources();
>        return new PDDefaultAppearanceString(da, dr);
>    }
> 
> 
> Tilman
> 
> 
>> 
>> Really appreciate the support.
>> 
>>> On Jun 13, 2016, at 2:51 PM, Tilman Hausherr <THausherr@t-online.de> wrote:
>>> 
>>> Am 13.06.2016 um 22:36 schrieb Barry Neu:
>>>> Thank you for the reply.
>>>> I could store meta data about the fields’ capacity as a last resort. However,
there are about 50 different forms to work with and the number will continue to grow.
>>>> 
>>>> Including Tilman’s reply here:
>>>> 	"Calculate the width of the /Rectangle. 1 unit = 1/72 inch.”
>>>> 
>>>> Are the /Rect coordinates represented in the following order?
>>>> Left rectangle boundary, Top, Right, Bottom
>>>> 
>>>> So, 91.095 - 51.855 = 39.24/72s inch wide (or a little over a 1/2 inch)??
>>>> 
>>>> And, how does one get to the /Rect data?
>>> Get the widgets of the field
>>> 
>>> PDField.getWidgets(). Usually there is only one (unless you have several widgets,
i.e. that the field appears several times in the PDF. So do this call:
>>> 
>>> getWidgets().get(0).getRectangle().getWidth()
>>> 
>>> What is in the PDF shouldn't matter, unless for debugging. I.e. don't try to
parse the PDF yourself.
>>> 
>>> I suggest you have a look at the examples in the source download, especially
in org.apache.pdfbox.examples.interactive.form.
>>> 
>>> Tilman
>>> 
>>>> I have a debug session open in Eclipse but am not seeing the /Rect data in
ether the PDField or PDAcroForm.
>>>> 
>>>>> On Jun 13, 2016, at 12:32 PM, Aaron Mulder <ammulder@gmail.com>
wrote:
>>>>> 
>>>>> If the form isn't changing, can you just check out the field
>>>>> definition in the PDF doc?  Here's one from the PDF form I'm working
>>>>> with:
>>>>> 
>>>>> << /Type /Annot /T (SlotsTotal 19) /V () /Rect [ 51.855 457.452
91.095 478.332
>>>>> ] /DV () /FT /Tx /DA (/Helvetica 12 Tf 0 g) /F 4 /MK 1972 0 R /Q 1 /Subtype
>>>>> /Widget >>
>>>>> 
>>>>> The /Rect units aren't in pixels but I assume the text width
>>>>> calculation would be the same so it would work out.
>>>>> 
>>>>> My PDF was originally a Linearized mess but I opened it and saved it
>>>>> in Preview on OS X and then all the form elements came out in plain
>>>>> text which made it easy to inspect in a text editor.
>>>>> 
>>>>> Thanks,
>>>>>      Aaron
>>>>> 
>>>>> 
>>>>> On Mon, Jun 13, 2016 at 1:32 PM, Barry Neu <barry.neu@gmail.com>
wrote:
>>>>>> Hello.
>>>>>> 
>>>>>> Is it possible to calculate the pixel width of a text field on a
fillable PDF?
>>>>>> If so, is there an example available or where can I look to research?
>>>>>> 
>>>>>> Some context:
>>>>>> I’m working with PDFBox 2.0.
>>>>>> Data for a fillable form is collected in a web user interface. If
the value for a given field exceeds the field capacity on the form, the value should be populated
on an addendum form. The font size of the field cannot scale down below a particular value.
>>>>>> 
>>>>>> The font and font size are known in advance so the length of the
Value can be calculated. But I need to know the pixel capacity of the field to know if the
value will “fit”.
>>>>>> Also open to an alternate strategy if someone has solved differently.
>>>>>> 
>>>>>> Thanks for any help.
>>>>>> ---------------------------------------------------------------------
>>>>>> 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
>>>>> 
>>>> ---------------------------------------------------------------------
>>>> 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
>>> 
>> 
>> ---------------------------------------------------------------------
>> 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
> 


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message