Am 12.07.2015 um 07:58 schrieb Md.Farooq:
Hi Team,
I am searching for PdbBox cookbook and sample java code for creating
interactive forms and read the form data from pdf.
i request dev team to please provide me the cook book and sample code for
creating interactive form with simple form example.
Hmm, yes, it's true, that is missing, i.e. an example for reading a
field and writing a field would be useful. And maybe creating a field.
However, had you read this
https://pdfbox.apache.org/support.html
you would have looked on stackoverflow or in the examples already :-)
In the examples, look for
PrintFields.java
SetField.java
About creating a field, here's some code that creates a field, this
appeared in the user mailing list a few weeks ago by the user "Phiroc",
for you "generateSimpleTemplate" is relevant:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
import org.apache.pdfbox.cos.COSArray;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSFloat;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSString;
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.font.PDType1Font;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.pdmodel.interactive.form.PDField;
import org.apache.pdfbox.pdmodel.interactive.form.PDTextbox;
/**
*
*
*/
public class Phiroc2
{
final static File RESULT_FOLDER = new File("XXXX");
final static File TEMPLATE_FOLDER = new File("XXXX");
public static void main(String[] args)
{
new Phiroc2();
}
public Phiroc2()
{
try
{
testGeneratedTemplate();
}
catch (COSVisitorException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void testGeneratedTemplate() throws COSVisitorException,
IOException
{
final byte[] generatedTemplate = generateSimpleTemplate();
final PDDocument templateDoc = PDDocument.load(new
ByteArrayInputStream(generatedTemplate));
Files.write(new File(TEMPLATE_FOLDER, "template.pdf").toPath(),
generatedTemplate);
final PDDocument finalDoc = new PDDocument();
final List<PDField> fields = new ArrayList<PDField>();
final int numberOfPages = 2;
final float inch = 72;
final float borderThickness = inch / 48f;
final float distanceFromField = inch / 2f;
for (int i = 0; i < numberOfPages; ++i)
{
System.out.println("page: " + i);
final PDDocumentCatalog templateDocCatalog =
templateDoc.getDocumentCatalog();
final PDAcroForm templateAcroForm =
templateDocCatalog.getAcroForm();
List<PDField> templatePdfFields = templateAcroForm.getFields();
System.out.println("field count: " + templatePdfFields.size());
for (PDField field : templatePdfFields)
{
System.out.println("fully qualified name = " +
field.getFullyQualifiedName());
System.out.println("alternate field name = " +
field.getAlternateFieldName());
System.out.println("partial name = " +
field.getPartialName());
}
final PDField templateField0_null =
templateAcroForm.getField("field");
System.out.println("templateField0_null: " +
templateField0_null);
final PDField templateField0 = templatePdfFields.get(0);
if (templateField0 != null)
{
templateField0.setValue("xxx" + i);
templateField0.setPartialName("field-" + i);
templateField0.setReadonly(true);
final List<PDPage> pages = (List<PDPage>)
templateDocCatalog.getAllPages();
PDPage page = pages.get(0);
finalDoc.addPage(page);
fields.add(templateField0);
}
}
final PDAcroForm finalForm = new PDAcroForm(finalDoc);
finalDoc.getDocumentCatalog().setAcroForm(finalForm);
finalForm.setFields(fields);
finalDoc.save(new File(RESULT_FOLDER, "form-two-templates.pdf"));
templateDoc.close();
finalDoc.close();
}
byte[] generateSimpleTemplate() throws IOException, COSVisitorException
{
PDDocument template = new PDDocument();
ByteArrayOutputStream resultStream = new ByteArrayOutputStream();
final PDPage page = new PDPage(PDPage.PAGE_SIZE_A4);
page.setRotation(90);
template.addPage(page);
final PDType1Font font = PDType1Font.HELVETICA_BOLD;
// add a new AcroForm and add it to the document
final PDAcroForm acroForm = new PDAcroForm(template);
template.getDocumentCatalog().setAcroForm(acroForm);
// Add and set the resources and default appearance
final PDResources res = new PDResources();
final String fontName = res.addFont(font);
acroForm.setDefaultResources(res);
final COSDictionary cosDict = new COSDictionary();
final COSArray rect = new COSArray();
rect.add(new COSFloat(250f)); // lower x boundary
rect.add(new COSFloat(700f)); // lower y boundary
rect.add(new COSFloat(500f)); // upper x boundary
rect.add(new COSFloat(750f)); // upper y boundary
cosDict.setItem(COSName.RECT, rect);
cosDict.setItem(COSName.FT, COSName.getPDFName("Tx")); // Field
Type
cosDict.setItem(COSName.TYPE, COSName.ANNOT);
cosDict.setItem(COSName.SUBTYPE, COSName.getPDFName("Widget"));
final String da = "/" + fontName + " 12 Tf 0 g";
cosDict.setItem(COSName.DA, new COSString(da));
// add a form field to the form
final PDTextbox textBox = new PDTextbox(acroForm, cosDict);
textBox.setPartialName("field");
acroForm.getFields().add(textBox);
// specify the annotation associated with the field
// and add it to the page
final PDAnnotationWidget widget = textBox.getWidget();
page.getAnnotations().add(widget);
template.save(resultStream);
template.close();
return resultStream.toByteArray();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]