Skip to content

Instantly share code, notes, and snippets.

  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save GroupDocsGists/bdcbf758f1741a4227514b54331e6d48 to your computer and use it in GitHub Desktop.
// For complete examples and data files, please go to https://github.com/groupdocs-parser/GroupDocs.Parser-for-Java
// Create a collection of template fields
TemplateField[] templateFields = new TemplateField[]
{
new TemplateField("FromCompany", TemplateFieldPosition.createFixed(new Rectangle(35, 135, 100, 10))),
new TemplateField("FromAddress", TemplateFieldPosition.createFixed(new Rectangle(35, 150, 100, 35))),
new TemplateField("FromEmail", TemplateFieldPosition.createFixed(new Rectangle(35, 190, 150, 2))),
new TemplateField("ToCompany", TemplateFieldPosition.createFixed(new Rectangle(35, 250, 100, 2))),
new TemplateField("ToAddress", TemplateFieldPosition.createFixed(new Rectangle(35, 260, 100, 15))),
new TemplateField("ToEmail", TemplateFieldPosition.createFixed(new Rectangle(35, 290, 150, 2))),
new TemplateField("InvoiceNumber", TemplateFieldPosition.createRegex("Invoice Number")),
new TemplateField("InvoiceNumberValue", TemplateFieldPosition.createRelated(
"InvoiceNumber",
TemplateFieldRelatedPositionType.Right,
new Size(200, 15))),
new TemplateField("InvoiceOrder", TemplateFieldPosition.createRegex("Order Number")),
new TemplateField("InvoiceOrderValue", TemplateFieldPosition.createRelated(
"InvoiceOrder",
TemplateFieldRelatedPositionType.Right,
new Size(200, 15))),
new TemplateField("InvoiceDate", TemplateFieldPosition.createRegex("Invoice Date")),
new TemplateField("InvoiceDateValue", TemplateFieldPosition.createRelated(
"InvoiceDate",
TemplateFieldRelatedPositionType.Right,
new Size(200, 15))),
new TemplateField("DueDate", TemplateFieldPosition.createRegex("Due Date")),
new TemplateField("DueDateValue", TemplateFieldPosition.createRelated(
"DueDate",
TemplateFieldRelatedPositionType.Right,
new Size(200, 15))),
new TemplateField("TotalDue", TemplateFieldPosition.createRegex("Total Due")),
new TemplateField("TotalDueValue", TemplateFieldPosition.createRelated(
"TotalDue",
TemplateFieldRelatedPositionType.Right,
new Size(200, 15))),
};
// Create detector parameters for "Details" table
TableAreaDetectorParameters detailsTableParameters = new TableAreaDetectorParameters();
detailsTableParameters.setRectangle(new Rectangle(35, 320, 530, 55));
// Create detector parameters for "Summary" table
TableAreaDetectorParameters summaryTableParameters = new TableAreaDetectorParameters();
summaryTableParameters.setRectangle(new Rectangle(330, 385, 220, 65));
// Create a collection of template tables
TemplateTable[] templateTables = new TemplateTable[]
{
new TemplateTable("details", detailsTableParameters),
new TemplateTable("summary", summaryTableParameters)
};
// Create a document template
DocumentTemplate template = new DocumentTemplate(Arrays.asList(templateFields), Arrays.asList(templateTables));
// Extract data from PDF
DocumentData data = DocumentParser.DEFAULT.parseByTemplate(Common.mapSourceFilePath(FILE_PATH), template);
// Get all the fields with "Address" name
List<DocumentDataField> addressFields = data.getDataFieldsByName("Address");
if (addressFields.size() == 0) {
System.out.println("Address not fount");
} else {
System.out.println("Address");
// Iterate over the fields collection
for (int i = 0; i < addressFields.size(); i++) {
System.out.println(addressFields.get(i).getValue());
// If it's a related field:
if (addressFields.get(i).getRelatedDataField() != null) {
System.out.print("Linked to ");
System.out.println(addressFields.get(i).getRelatedDataField().getValue());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment