
{
"pdf":[
{
"pdfContent": "JVBERi0xLjYNJeLjz9MNCjk...."
},
{
"pdfContent": "JVBERi0xLjYNJeLjz9MNCjQ...."
},
{
"pdfContent": "JVBERi0xLjYNJeLjz9MNCjQ...."
}
]
}
public static String getBody(HttpServletRequest request) throws IOException {
String body = null;
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
try {
InputStream inputStream = request.getInputStream();
if (inputStream != null) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
char[] charBuffer = new char[128];
int bytesRead = -1;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, 0, bytesRead);
}
} else {
stringBuilder.append("");
}
} catch (IOException ex) {
throw ex;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException ex) {
throw ex;
}
}
}
body = stringBuilder.toString();
return body;
}
String payloadRequest = MergePDF.getBody(request);
PrintWriter writer=response.getWriter();
try {
//Parse the json string into JSON Object
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(payloadRequest);
JSONArray aPDF = (JSONArray) json.get("pdf");
public static String _mergePDF(JSONArray aPDF) {
// TODO Auto-generated method stub
int n = aPDF.size();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {
PDFMergerUtility PDFmerger = new PDFMergerUtility();
PDFmerger.setDestinationStream(outputStream);
for(int i = 0 ; i < n; i++) {
JSONObject oPDFObject = (JSONObject)aPDF.get(i);
String sPDFContent = (String)oPDFObject.get("pdfContent");
byte[] decodedString = Base64.getDecoder().decode(new String(sPDFContent).getBytes("UTF-8"));
//PDDocument doc1 = PDDocument.load(new ByteArrayInputStream(decodedString));
PDFmerger.addSource(new ByteArrayInputStream(decodedString));
}
PDFmerger.mergeDocuments();
byte[] encoded = Base64.getEncoder().encode(outputStream.toByteArray());
return new String(encoded);
} catch(Exception e) {
return e.toString();
}
}
HashMap<String, String> oResponseMap = new HashMap<String, String>();
String sBase64 = MergePDF._mergePDF(aPDF);
oResponseMap.put("pdfResponse", sBase64);
response.setStatus(200);
response.setContentType("application/json");
writer.print(JSONObject.toJSONString(oResponseMap));
package com.sap.blog;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Base64;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.pdfbox.util.PDFMergerUtility;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
/**
* Servlet implementation class MergePDF
*/
@WebServlet("/MergePDF")
public class MergePDF extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public MergePDF() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String payloadRequest = MergePDF.getBody(request);
PrintWriter writer=response.getWriter();
try {
//Parse the json string into JSON Object
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(payloadRequest);
JSONArray aPDF = (JSONArray) json.get("pdf");
HashMap<String, String> oResponseMap = new HashMap<String, String>();
String sBase64 = MergePDF._mergePDF(aPDF);
oResponseMap.put("pdfResponse", sBase64);
response.setStatus(200);
response.setContentType("application/json");
writer.print(JSONObject.toJSONString(oResponseMap));
} catch(Exception e) {
response.setStatus(500);
response.setContentType("text/xml");
writer.append(e.toString());
}
}
public static String _mergePDF(JSONArray aPDF) {
// TODO Auto-generated method stub
int n = aPDF.size();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {
PDFMergerUtility PDFmerger = new PDFMergerUtility();
PDFmerger.setDestinationStream(outputStream);
for(int i = 0 ; i < n; i++) {
JSONObject oPDFObject = (JSONObject)aPDF.get(i);
String sPDFContent = (String)oPDFObject.get("pdfContent");
byte[] decodedString = Base64.getDecoder().decode(new String(sPDFContent).getBytes("UTF-8"));
//PDDocument doc1 = PDDocument.load(new ByteArrayInputStream(decodedString));
PDFmerger.addSource(new ByteArrayInputStream(decodedString));
}
PDFmerger.mergeDocuments();
byte[] encoded = Base64.getEncoder().encode(outputStream.toByteArray());
return new String(encoded);
} catch(Exception e) {
return e.toString();
}
}
public static String getBody(HttpServletRequest request) throws IOException {
String body = null;
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
try {
InputStream inputStream = request.getInputStream();
if (inputStream != null) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
char[] charBuffer = new char[128];
int bytesRead = -1;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, 0, bytesRead);
}
} else {
stringBuilder.append("");
}
} catch (IOException ex) {
throw ex;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException ex) {
throw ex;
}
}
}
body = stringBuilder.toString();
return body;
}
}
convertBase64: function (file) {
var reader = new FileReader();
return new Promise(function (resolve, reject) {
reader.readAsDataURL(file);
reader.onload = function (result) {
resolve(reader.result.substring(28));
};
reader.onerror = function (error) {
reject(new Error("Error: ", error.message));
};
});
}
_mergePDF: function (pdfContent1, pdfContent2) {
//Create an Input Payload for Java Application to Merge the PDFs
var oPDF = {
pdf: [{
pdfContent: pdfContent1
}, {
pdfContent: pdfContent2
}]
},
sPDF = JSON.stringify(oPDF),
sUrl = "<Your Destination / URL to the Java Application>";
$.ajax({
url: sUrl,
method:"POST",
data: sPDF,
dataType:"json",
contentType: "application/json;charset=utf-8",
success: function (data) {
//Get the meregd PDF response in Base64 format
var sBaseResult = data.pdfResponse;
//Display the Base64 merged PDF on the UI5 Screen
this.displayPDF(sBaseResult);
}.bind(this),
error: function (oError) {
sap.m.MessageBox("Cannot Merge PDF");
}
});
}
displayPDF: function (sBase64PDF) {
var sUrl = this._createUrl(sBase64PDF);
if (!this.oPDFViewer) {
//Instantiate the PDFViewer Object if not already done
this.oPDFViewer = new sap.m.PDFViewer();
}
jQuery.sap.addUrlWhitelist("data");
this.oPDFViewer.setSource(sUrl);
this.oPDFViewer.open();
},
_createUrl: function (sData) {
//Form the URL from the Base64 content
return "data:application/pdf;base64," + sData;
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
7 | |
7 | |
6 | |
4 | |
4 | |
4 | |
4 | |
4 | |
3 | |
3 |