From 233efb7e035b7ef90f4d20d86ddc44504105f7f6 Mon Sep 17 00:00:00 2001 From: Bharath Date: Fri, 12 Apr 2024 17:26:01 +0530 Subject: [PATCH 1/4] 877243: Added mail merge api endpoint in java --- .../ej2/webservices/WordEditorController.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/Java/src/main/java/ej2/webservices/WordEditorController.java b/Java/src/main/java/ej2/webservices/WordEditorController.java index 0760695..5150989 100644 --- a/Java/src/main/java/ej2/webservices/WordEditorController.java +++ b/Java/src/main/java/ej2/webservices/WordEditorController.java @@ -6,6 +6,7 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Base64; import java.util.List; import javax.imageio.ImageIO; @@ -16,7 +17,9 @@ import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.IOException; import java.io.InputStream; import org.springframework.core.io.ByteArrayResource; @@ -126,6 +129,66 @@ public void remove(MetafileImageParsedEventHandler delegate) throws Exception { } } + @CrossOrigin(origins = "*", allowedHeaders = "*") + @PostMapping("/api/wordeditor/MailMerge") + public String MailMerge(@RequestBody ExportData exportData) + { + final String[] fieldNames = { + "ShipName", "OrderID", "Discount", "ShipAddress", "ShipCity", + "OrderDate", "ShipCountry", "ProductName", "Quantity", "CustomerID", + "UnitPrice", "Subtotal", "Freight", "Total", "ShipPostalCode", + "ShippedDate", "RequiredDate", "ExtendedPrice" + }; + + final String[] fieldValues = { + "Nancy Davolio", "10248", "0.2", "507 - 20th Ave. E.Apt. 2A", "Seattle", + "7/4/1996", "USA", "Chai", "10", "VINET", + "14", "168.00", "32.38", "200.00", "98122", + "7/16/1996", "8/1/1996", "168.00" + }; + MailMerge.performMailMerge(); +// String[][] fieldValues = MailMerge.getCustomerDataArray(); + String[] parts = exportData.getDocumentData().split(","); + byte[] data = Base64.getDecoder().decode(parts[1]); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + ByteArrayOutputStream newStream = new ByteArrayOutputStream();; + stream.write(data, 0, data.length); +// stream.flush(); + try { + stream.flush(); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + try + { + ByteArrayInputStream inStream = new ByteArrayInputStream(data); + WordDocument document = new WordDocument(inStream, com.syncfusion.docio.FormatType.Docx); + document.getMailMerge().setRemoveEmptyGroup(true); + document.getMailMerge().setRemoveEmptyParagraphs(true); + document.getMailMerge().setClearFields(true); +// String[] fieldNames = new String[] { "FullName" }; +// String[] fieldValues = new String[] { "Nancy Davolio" }; +// String[] fieldNames = MailMerge.getFieldNamesArray(); +// String[] fieldValues = MailMerge.getFieldValuesArray(); + document.getMailMerge().execute(fieldNames , fieldValues); + document.save(newStream, com.syncfusion.docio.FormatType.Docx); + } + catch (Exception ex) + { } + byte[] dataOne = newStream.toByteArray(); + System.out.println(dataOne); + ByteArrayInputStream inputStream = new ByteArrayInputStream(dataOne); + System.out.println(inputStream); + String sfdtText = ""; + try { + sfdtText = WordProcessorHelper.load(inputStream, com.syncfusion.ej2.wordprocessor.FormatType.Docx); + } catch (Exception e) { + e.printStackTrace(); + } + return sfdtText; + } + // Converts Metafile to raster image. private static void onMetafileImageParsed(Object sender, MetafileImageParsedEventArgs args) throws Exception { if(args.getIsMetafile()) { From 5e9bef307233887cd06b2e4da2f58e4d9b19c06b Mon Sep 17 00:00:00 2001 From: Bharath Date: Fri, 12 Apr 2024 17:41:24 +0530 Subject: [PATCH 2/4] 877243: Updated the endpoint with the static data --- .../ej2/webservices/WordEditorController.java | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/Java/src/main/java/ej2/webservices/WordEditorController.java b/Java/src/main/java/ej2/webservices/WordEditorController.java index 5150989..c4aa346 100644 --- a/Java/src/main/java/ej2/webservices/WordEditorController.java +++ b/Java/src/main/java/ej2/webservices/WordEditorController.java @@ -139,26 +139,20 @@ public String MailMerge(@RequestBody ExportData exportData) "UnitPrice", "Subtotal", "Freight", "Total", "ShipPostalCode", "ShippedDate", "RequiredDate", "ExtendedPrice" }; - final String[] fieldValues = { "Nancy Davolio", "10248", "0.2", "507 - 20th Ave. E.Apt. 2A", "Seattle", "7/4/1996", "USA", "Chai", "10", "VINET", "14", "168.00", "32.38", "200.00", "98122", "7/16/1996", "8/1/1996", "168.00" - }; - MailMerge.performMailMerge(); -// String[][] fieldValues = MailMerge.getCustomerDataArray(); + }; String[] parts = exportData.getDocumentData().split(","); byte[] data = Base64.getDecoder().decode(parts[1]); ByteArrayOutputStream stream = new ByteArrayOutputStream(); ByteArrayOutputStream newStream = new ByteArrayOutputStream();; stream.write(data, 0, data.length); -// stream.flush(); try { stream.flush(); - } catch (IOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); + } catch (IOException e1) { } try { @@ -167,12 +161,9 @@ public String MailMerge(@RequestBody ExportData exportData) document.getMailMerge().setRemoveEmptyGroup(true); document.getMailMerge().setRemoveEmptyParagraphs(true); document.getMailMerge().setClearFields(true); -// String[] fieldNames = new String[] { "FullName" }; -// String[] fieldValues = new String[] { "Nancy Davolio" }; -// String[] fieldNames = MailMerge.getFieldNamesArray(); -// String[] fieldValues = MailMerge.getFieldValuesArray(); - document.getMailMerge().execute(fieldNames , fieldValues); + document.getMailMerge().execute(fieldNames, fieldValues); document.save(newStream, com.syncfusion.docio.FormatType.Docx); + document.close(); } catch (Exception ex) { } @@ -183,8 +174,7 @@ public String MailMerge(@RequestBody ExportData exportData) String sfdtText = ""; try { sfdtText = WordProcessorHelper.load(inputStream, com.syncfusion.ej2.wordprocessor.FormatType.Docx); - } catch (Exception e) { - e.printStackTrace(); + } catch (Exception e) { } return sfdtText; } From b1cb2669e3c2a1559521716690594275c25bca0c Mon Sep 17 00:00:00 2001 From: Bharath Date: Fri, 12 Apr 2024 17:45:42 +0530 Subject: [PATCH 3/4] 877243: Formatted the code --- Java/src/main/java/ej2/webservices/WordEditorController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Java/src/main/java/ej2/webservices/WordEditorController.java b/Java/src/main/java/ej2/webservices/WordEditorController.java index c4aa346..6abe838 100644 --- a/Java/src/main/java/ej2/webservices/WordEditorController.java +++ b/Java/src/main/java/ej2/webservices/WordEditorController.java @@ -152,7 +152,7 @@ public String MailMerge(@RequestBody ExportData exportData) stream.write(data, 0, data.length); try { stream.flush(); - } catch (IOException e1) { + } catch (IOException e1) { } try { From 3717fc3783568b25b0b207278a5c7b4a3e1cbbd1 Mon Sep 17 00:00:00 2001 From: Bharath Date: Fri, 12 Apr 2024 17:58:21 +0530 Subject: [PATCH 4/4] 877243: Formatted the data and changed variable names --- .../ej2/webservices/WordEditorController.java | 84 +++++++++---------- 1 file changed, 40 insertions(+), 44 deletions(-) diff --git a/Java/src/main/java/ej2/webservices/WordEditorController.java b/Java/src/main/java/ej2/webservices/WordEditorController.java index 6abe838..0f7f331 100644 --- a/Java/src/main/java/ej2/webservices/WordEditorController.java +++ b/Java/src/main/java/ej2/webservices/WordEditorController.java @@ -133,50 +133,46 @@ public void remove(MetafileImageParsedEventHandler delegate) throws Exception { @PostMapping("/api/wordeditor/MailMerge") public String MailMerge(@RequestBody ExportData exportData) { - final String[] fieldNames = { - "ShipName", "OrderID", "Discount", "ShipAddress", "ShipCity", - "OrderDate", "ShipCountry", "ProductName", "Quantity", "CustomerID", - "UnitPrice", "Subtotal", "Freight", "Total", "ShipPostalCode", - "ShippedDate", "RequiredDate", "ExtendedPrice" - }; - final String[] fieldValues = { - "Nancy Davolio", "10248", "0.2", "507 - 20th Ave. E.Apt. 2A", "Seattle", - "7/4/1996", "USA", "Chai", "10", "VINET", - "14", "168.00", "32.38", "200.00", "98122", - "7/16/1996", "8/1/1996", "168.00" - }; - String[] parts = exportData.getDocumentData().split(","); - byte[] data = Base64.getDecoder().decode(parts[1]); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - ByteArrayOutputStream newStream = new ByteArrayOutputStream();; - stream.write(data, 0, data.length); - try { - stream.flush(); - } catch (IOException e1) { - } - try - { - ByteArrayInputStream inStream = new ByteArrayInputStream(data); - WordDocument document = new WordDocument(inStream, com.syncfusion.docio.FormatType.Docx); - document.getMailMerge().setRemoveEmptyGroup(true); - document.getMailMerge().setRemoveEmptyParagraphs(true); - document.getMailMerge().setClearFields(true); - document.getMailMerge().execute(fieldNames, fieldValues); - document.save(newStream, com.syncfusion.docio.FormatType.Docx); - document.close(); - } - catch (Exception ex) - { } - byte[] dataOne = newStream.toByteArray(); - System.out.println(dataOne); - ByteArrayInputStream inputStream = new ByteArrayInputStream(dataOne); - System.out.println(inputStream); - String sfdtText = ""; - try { - sfdtText = WordProcessorHelper.load(inputStream, com.syncfusion.ej2.wordprocessor.FormatType.Docx); - } catch (Exception e) { - } - return sfdtText; + final String[] fieldNames = { + "ShipName", "OrderID", "Discount", "ShipAddress", "ShipCity", + "OrderDate", "ShipCountry", "ProductName", "Quantity", "CustomerID", + "UnitPrice", "Subtotal", "Freight", "Total", "ShipPostalCode", + "ShippedDate", "RequiredDate", "ExtendedPrice" + }; + final String[] fieldValues = { + "Nancy Davolio", "10248", "0.2", "507 - 20th Ave. E.Apt. 2A", "Seattle", + "7/4/1996", "USA", "Chai", "10", "VINET", + "14", "168.00", "32.38", "200.00", "98122", + "7/16/1996", "8/1/1996", "168.00" + }; + String[] documentParts = exportData.getDocumentData().split(","); + byte[] documentData = Base64.getDecoder().decode(documentParts[1]); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ByteArrayOutputStream newOutputStream = new ByteArrayOutputStream();; + outputStream.write(documentData, 0, documentData.length); + try { + outputStream.flush(); + } catch (IOException e1) { + } + try { + ByteArrayInputStream inputStream = new ByteArrayInputStream(documentData); + WordDocument document = new WordDocument(inputStream, com.syncfusion.docio.FormatType.Docx); + document.getMailMerge().setRemoveEmptyGroup(true); + document.getMailMerge().setRemoveEmptyParagraphs(true); + document.getMailMerge().setClearFields(true); + document.getMailMerge().execute(fieldNames, fieldValues); + document.save(newOutputStream, com.syncfusion.docio.FormatType.Docx); + document.close(); + } catch (Exception ex) { + } + byte[] processedData = newOutputStream.toByteArray(); + ByteArrayInputStream processedInputStream = new ByteArrayInputStream(processedData); + String sfdtText = ""; + try { + sfdtText = WordProcessorHelper.load(processedInputStream, com.syncfusion.ej2.wordprocessor.FormatType.Docx); + } catch (Exception e) { + } + return sfdtText; } // Converts Metafile to raster image.