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<thaush...@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<thaush...@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<ammul...@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....@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-unsubscr...@pdfbox.apache.org
For additional commands, e-mail:users-h...@pdfbox.apache.org

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

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

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

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

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


Reply via email to