pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tilman Hausherr <THaush...@t-online.de>
Subject Re: PDField - How to calculate the pixel capacity of a text field?
Date Fri, 17 Jun 2016 16:03:20 GMT
Am 16.06.2016 um 23:12 schrieb Barry Neu:
> Given an earlier reply from Maruan:
> "you can get the width of a string using PDFont.getStringWidth(String text)"

Yes this is true.

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

Yes that too. If you have a size 12 then multiply with 12. And divide by 
1000 (this is only for string widths):

float stringWidth = font.getStringWidth( message )*fontSize/1000f;

(This is from the CreateLandscapePDF example)

If your font is size 12: 2780 * 12 / 1000 / 72 * 2.54 = 1.17cm

To decide whether it will fit in your rectangle, just use

2780 * 12 / 1000 = 33.36

Sorry that this doesn't really go forward. If you have a PDF and a 
minimal software maybe we can help better.

Tilman


> 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