Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id F17CF200B0F for ; Fri, 17 Jun 2016 18:03:04 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id F01DD160A61; Fri, 17 Jun 2016 16:03:04 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 1D681160A4C for ; Fri, 17 Jun 2016 18:03:03 +0200 (CEST) Received: (qmail 54702 invoked by uid 500); 17 Jun 2016 16:03:03 -0000 Mailing-List: contact users-help@pdfbox.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@pdfbox.apache.org Delivered-To: mailing list users@pdfbox.apache.org Received: (qmail 54691 invoked by uid 99); 17 Jun 2016 16:03:02 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 17 Jun 2016 16:03:02 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id 81E64C0DF1 for ; Fri, 17 Jun 2016 16:03:02 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.554 X-Spam-Level: * X-Spam-Status: No, score=1.554 tagged_above=-999 required=6.31 tests=[HTML_MESSAGE=2, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-1.426] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id NGeYvyEOIUJU for ; Fri, 17 Jun 2016 16:02:59 +0000 (UTC) Received: from mailout02.t-online.de (mailout02.t-online.de [194.25.134.17]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id A6E765F1E7 for ; Fri, 17 Jun 2016 16:02:58 +0000 (UTC) Received: from fwd17.aul.t-online.de (fwd17.aul.t-online.de [172.20.27.64]) by mailout02.t-online.de (Postfix) with SMTP id 0F1E941A08A5 for ; Fri, 17 Jun 2016 18:02:51 +0200 (CEST) Received: from [192.168.2.104] (Jbllw2ZVZh3gaw6JLlEI9DF-oOQ6EKWbDlQIA9a2tDiK9TjEBWPdV9WXjw6v431gVd@[217.231.131.150]) by fwd17.t-online.de with (TLSv1.2:ECDHE-RSA-AES256-SHA encrypted) esmtp id 1bDwEK-1pFfqi0; Fri, 17 Jun 2016 18:02:48 +0200 From: Tilman Hausherr Subject: Re: PDField - How to calculate the pixel capacity of a text field? To: users@pdfbox.apache.org References: <35D05BA0C1DAFF459AAA18507A41A593367FF7B9@vmail01.inside.de> <1908e672-519d-fae2-fe37-fa3ed39bc69b@t-online.de> <4BCE8D29-7722-47B2-B02D-17628A34321D@gmail.com> Message-ID: <04866e26-4335-238e-fca0-6765d53c13d1@t-online.de> Date: Fri, 17 Jun 2016 18:03:20 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 MIME-Version: 1.0 In-Reply-To: <4BCE8D29-7722-47B2-B02D-17628A34321D@gmail.com> Content-Type: multipart/alternative; boundary="------------1A54B94222C6E610849EDEC0" X-ID: Jbllw2ZVZh3gaw6JLlEI9DF-oOQ6EKWbDlQIA9a2tDiK9TjEBWPdV9WXjw6v431gVd X-TOI-MSGID: deef49a6-a2b4-4fec-9ce1-7178f5f23047 archived-at: Fri, 17 Jun 2016 16:03:05 -0000 --------------1A54B94222C6E610849EDEC0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit 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 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 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 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 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 >> --------------1A54B94222C6E610849EDEC0--