You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "John Hewson (JIRA)" <ji...@apache.org> on 2014/10/11 02:22:34 UTC
[jira] [Closed] (PDFBOX-1747) PDFBox_1.8.2 Bug in PDTextBox
[ https://issues.apache.org/jira/browse/PDFBOX-1747?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Hewson closed PDFBOX-1747.
-------------------------------
Resolution: Invalid
This bug report is just not going to cut it.
> PDFBox_1.8.2 Bug in PDTextBox
> -----------------------------
>
> Key: PDFBOX-1747
> URL: https://issues.apache.org/jira/browse/PDFBOX-1747
> Project: PDFBox
> Issue Type: Bug
> Components: AcroForm
> Affects Versions: 1.8.2
> Environment: macox,
> Reporter: arnold villasanta
>
> Error when assign values to PDTextBox:
> started
> The length of the catalog = 1
> the value of SetFont = 4
> the name of the field = Text1
> the value of the field = null
> the value of BaseFont = Times-Roman
> Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -3
> at java.util.ArrayList.get(ArrayList.java:324)
> at org.apache.pdfbox.pdmodel.interactive.form.PDAppearance.getFontAndUpdateResources(PDAppearance.java:434)
> at org.apache.pdfbox.pdmodel.interactive.form.PDAppearance.setAppearanceValue(PDAppearance.java:268)
> at org.apache.pdfbox.pdmodel.interactive.form.PDVariableText.setValue(PDVariableText.java:131)
> at com.agict.pdftool.PDFForm.run(PDFForm.java:75)
> at com.agict.pdftool.PDFForm.main(PDFForm.java:113)
> Complete Source Code:
> package com.agict.pdftool;
> import java.io.IOException;
> import java.util.HashMap;
> import java.util.List;
> import java.util.Map;
> import org.apache.pdfbox.cos.COSDictionary;
> import org.apache.pdfbox.cos.COSName;
> import org.apache.pdfbox.exceptions.COSVisitorException;
> import org.apache.pdfbox.pdmodel.PDDocument;
> import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
> import org.apache.pdfbox.pdmodel.PDPage;
> import org.apache.pdfbox.pdmodel.PDResources;
> import org.apache.pdfbox.pdmodel.common.PDRectangle;
> import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
> import org.apache.pdfbox.pdmodel.font.PDFont;
> import org.apache.pdfbox.pdmodel.font.PDType1Font;
> import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
> import org.apache.pdfbox.pdmodel.interactive.form.PDTextbox;
> public class PDFForm
> {
> @SuppressWarnings("unchecked")
> private void run() throws COSVisitorException, IOException
> {
> PDDocument document = new PDDocument();
> PDDocumentCatalog docCatalog = document.getDocumentCatalog();
> PDPage page = new PDPage();
> document.addPage( page );
>
> PDResources res = new PDResources();
> res.setFonts( createFontMap() );
> page.setResources( res );
> PDAcroForm acroForm = new PDAcroForm( document );
> PDResources dr = new PDResources();
> dr.setFonts( createFontMap() );
> acroForm.setDefaultResources( dr );
> @SuppressWarnings("rawtypes")
> List annotations = page.getAnnotations();
> COSDictionary dic = new COSDictionary();
> PDTextbox textField = new PDTextbox( acroForm, dic );
> COSDictionary textFieldDict = textField.getDictionary();
> textFieldDict.setName( COSName.FT, "Tx" );
> PDRectangle rect = new PDRectangle();
> rect.setLowerLeftX( ( float ) 88.14579772949219 );
> rect.setLowerLeftY( ( float ) 394.781005859375 );
> rect.setUpperRightX( ( float ) 232.9340057373047 );
> rect.setUpperRightY( ( float ) 416.5929870605469 );
> textField.getWidget().setRectangle( rect );
> textField.setMultiline(true);
> textField.setPartialName( "Text1" );
> acroForm.getFields().add( textField );
> annotations.add(textField);
> annotations.add(textField.getWidget());
>
> docCatalog.setAcroForm( acroForm );
> List fields = docCatalog.getAcroForm().getFields();
> System.out.println("The length of the catalog = " + fields.size());
> String fieldName = docCatalog.getAcroForm().getField("Text1").getPartialName();
> String fieldValue = docCatalog.getAcroForm().getField("Text1").getValue();
> System.out.println("the value of SetFont = " + dr.getFonts().size());
> System.out.println("the name of the field = " + fieldName);
> System.out.println("the value of the field = " + fieldValue);
> System.out.println("the value of BaseFont = " + PDType1Font.TIMES_ROMAN.getBaseFont());
> textField.setValue( "some text" );
> String fieldValue2 = docCatalog.getAcroForm().getField("Text1").getValue();
> System.out.println("the value of the field after set = " + fieldValue2);
> // create simple text
> PDPageContentStream contentStream = new PDPageContentStream( document, page, true, true );
> contentStream.beginText();
> contentStream.moveTextPositionByAmount( 100, 700 );
> contentStream.drawString( "Hello World" );
> contentStream.endText();
> contentStream.close();
>
> document.save( "PDF_Form.pdf" );
> document.close();
>
>
>
> }
> private Map< String, PDFont > createFontMap()
> {
> Map< String, PDFont > fonts = new HashMap< String, PDFont >();
> fonts.put( PDType1Font.HELVETICA.getBaseFont(), PDType1Font.HELVETICA );
> fonts.put( PDType1Font.HELVETICA_BOLD.getBaseFont(), PDType1Font.HELVETICA_BOLD );
> fonts.put( PDType1Font.HELVETICA_OBLIQUE.getBaseFont(), PDType1Font.HELVETICA_OBLIQUE);
> fonts.put( PDType1Font.HELVETICA_BOLD_OBLIQUE.getBaseFont(), PDType1Font.HELVETICA_BOLD_OBLIQUE);
> return fonts;
> }
> public static void main( String[] args )
> {
> System.out.println( "started" );
> PDFForm main = new PDFForm();
> try
> {
> main.run();
> }
> catch ( COSVisitorException e )
> {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> catch ( IOException e )
> {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> }
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)