Hello Team,
I have generated pdf based user inputs through javascript using pdfmake library, now i have to send email with generated pdf to customers. I am able send mail with pdf using smpt.js library but due to some security concerns its not recommended. Now I am thinking to send/post the generated pdf to backend (servlet class ) & send using acs commons email api.
Tried with below scenarious,
1. I tried sending pdf as Base64 from js & decode the same in servlet using java.util.Base64. getDecoder.decode(String) - getting Illegal exception.
2. attaching pdf object to formData() object (as key- value) sending to servlet through ajax, still getting data as empty.
Can please helpn me is there any to achieve this.
Thanks in Advance
Solved! Go to Solution.
Views
Replies
Total Likes
Please try below code & it will not throw any error in java while decrypting the base64 encrypted file content.
Javascript
var file = $('#file-input')[0].files[0];
var reader = new FileReader();
var fileContent; //data to be sent in ajax request with attr name 'fileContent'
reader.onload = function(readerEvt, test){
fileContent = btoa(readerEvt.target.result);
}
reader.readAsBinaryString(file);
Java :
String decryptedFileContent = new String(Base64.decodeBase64(request.getParameter("fileContent")));
Please try below code & it will not throw any error in java while decrypting the base64 encrypted file content.
Javascript
var file = $('#file-input')[0].files[0];
var reader = new FileReader();
var fileContent; //data to be sent in ajax request with attr name 'fileContent'
reader.onload = function(readerEvt, test){
fileContent = btoa(readerEvt.target.result);
}
reader.readAsBinaryString(file);
Java :
String decryptedFileContent = new String(Base64.decodeBase64(request.getParameter("fileContent")));
Hi @Manjunath_K
correct me if I am wrong, I think above solution will work when we upload pdf file (any file) manually, but in my case pdf is getting generated dynamically based on user inputs on page. How can I send generated pdf to backend(java class), so that i can use it in email service api to send email with pdf.
Code responsible to download pdf on client-side --
pdfMake.createPdf(docDefinition).download();
Instead of download, I want to send pdf to java, so that I can use it to send mail with pdf.
let me if you need more info.
Thanks
Views
Replies
Total Likes
Instead of pdfMake.createPdf(this.docDefinition).download() try below approach, get base64 file content & decrypt base64 file content in java.
Javascript
const pdfDocGenerator = pdfMake.createPdf(this.docDefinition);
pdfDocGenerator.getBase64((data) => {
fileContent = data //data to be sent in ajax request with attr name 'fileContent'
});
Java :
String decryptedFileContent = new String(Base64.decodeBase64(request.getParameter("fileContent")));
Views
Replies
Total Likes
Views
Likes
Replies