Uploaded image for project: 'PDFBox'
  1. PDFBox
  2. PDFBOX-3812

Support auto size font for multiline PDTextField

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.6
    • Fix Version/s: 2.0.21, 3.0.0 PDFBox
    • Component/s: AcroForm
    • Labels:
      None
    • Environment:
      Windows 7 and Mac OSX, Java 1.8.0_121

      Description

      Hello, I ve got a simple pdf file "TestPDF.pdf" with just one text field named "Text1". It is set up as auto size and multiline field.

      My code :

      GeneratePDF.java
      	File fileTemplate = new File("/Users/xxx/Downloads/TestPDF.pdf");
      		PDDocument doc = null;
      		try {
      			doc = PDDocument.load(fileTemplate);
      		} catch (IOException e) {
      			e.printStackTrace();
      		}
      		PDDocumentCatalog catalog = doc.getDocumentCatalog();
      		PDAcroForm form = catalog.getAcroForm();
      		PDTextField field = (PDTextField)form.getField("Text1");
      //		field.setDefaultAppearance("/Helv 0 Tf 1 0 0 rg")
      
      		String longText = "THIS IS A VERY VERY LONG TEXT IN A MULTINLINE TEXT FIELD " 
      				+ "THIS CAN BE REALY LONG TEXT FIELD CONTAINING A FULL ADDRESS OF THE CUSTOMER"
      				+ "WE WANT TO HAVE AN AUTO SIZED FIELD WITH DYNAMICALY CHANGED FONT SIZE. TO TEST IT OUT WE" + "NEED AT THE END 123";
      		try {
      			field.setValue(longText);
      //			form.flatten();
      			doc.save("/Users/xxx/TestPDF_generated.pdf");
      			doc.close();
      		} catch (IOException e) {
      			e.printStackTrace();
      		}
      	

      Please open the attached "TestPDF_gen.pdf" file in the Adobe Acrobat. It shows the text cut off at the end. However if you click inside the field it sudenly renders text properly.

      Other remarks :
      1. If you open the "TestPDF_gen.pdf" file in the Preview (Mac OSX default pdf viewer) then the Text1 shows text properly auto sized.
      2. If you do flat the form by uncommenting form.flatten(). Then the Text1 is cut off at the end of the text and font size is not auto. I ve tried both Adobe Acrobat and Preview. See the "TestPDF_gen_flatten.pdf"
      3. I ve also tried calling setDefaultAppearance method before setting the field's value - field.setDefaultAppearance("/Helv 0 Tf 1 0 0 rg") but it did not help.

        Attachments

        1. TestPDF.pdf
          8 kB
          Marek Zajac
        2. TestPDF_gen.pdf
          11 kB
          Marek Zajac
        3. TestPDF_gen_flatten.pdf
          10 kB
          Marek Zajac
        4. Test_TextField_Multiline_Autosize.pdf
          19 kB
          Marek Zajac
        5. PDFBOX-3812-break-too-long-words-and-use-default-font-size-as-max-in-multiline-fields.patch
          4 kB
          Sebastian Fieber
        6. PDFBOX3812-acrobat-multiline-auto.pdf
          29 kB
          Maruan Sahyoun
        7. Autosizing.pdf
          14 kB
          Maruan Sahyoun

        Issue Links

          Activity

            People

            • Assignee:
              msahyoun Maruan Sahyoun
              Reporter:
              Marek Zajac Marek Zajac

              Dates

              • Created:
                Updated:
                Resolved:

                Issue deployment