Friends,
I am try to create a PDF file and successive download using “File opener” plugin . But my problem is in creation of Blob from base64 value…
my base64 to blob function is
base64toBlob(base64Data, contentType) {
contentType = contentType || '';
var sliceSize = 1024;
var byteCharacters = atob(base64Data);
var bytesLength = byteCharacters.length;
var slicesCount = Math.ceil(bytesLength / sliceSize);
var byteArrays = new Array(slicesCount);
for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
var begin = sliceIndex * sliceSize;
var end = Math.min(begin + sliceSize, bytesLength);
var bytes = new Array(end - begin);
for (var offset = begin, i = 0 ; offset < end; ++i, ++offset) {
bytes[i] = byteCharacters[offset].charCodeAt(0);
}
byteArrays[sliceIndex] = new Uint8Array(bytes);
}
return new Blob(byteArrays, { type: contentType });
}
But When i try to create pdf file i got error as
{“code”: 5,“message”:“ENCODING_ERR”}
I directly pass base64 data without make blob. In that case also same error…
My function for pdf creation is
getOwnershipCertificate(lb, bid, reason) {
this.certificateProvider.getOwnershipCertificate(lb, bid, reason)
.then(data => {
var downloadPDF: any = data[0].ownershippdf;
var base64pdf = downloadPDF;
var contentType = 'application/pdf';
var blobPdf = this.base64toBlob(base64pdf,contentType);
// only work for Android
var pathFile = "cordova.file.externalDataDirectory";
var fileName = "Ownership.pdf";
var contentFile = blobPdf;
this.file.writeFile(pathFile, fileName, contentFile, { replace: true})
.then(function(success) {
alert("success");
}, function(error) {
alert("error in the report creation: "+JSON.stringify(error));
});
}).catch(err => {
console.error('ownership get error',err);
});
}
provider code is
getOwnershipCertificate(lb,bid,reason)
{
var obj = {wspassword: 'mi$$i0n', wsname: 'getOwnershipCertPDF', lb: lb, bid: bid, reason: reason };
var myData = JSON.stringify(obj);
if(this.data)
{
return Promise.resolve(this.data);
} else {
return new Promise
(
(resolve,reject) =>
{
this.http.post('http://ps.m.gov.in/mobservice/index.php/chaya/',myData,{ headers: new HttpHeaders()
, responseType: 'json'})
//.map(res => res)
.subscribe
(res => {
resolve(res);
},
err => {console.log("oops some error on taking ownership certificate PDF base 64 encoded string");reject(err);}
);
}
);
}
}
error caught in main function at
alert("error in the report creation: "+JSON.stringify(error));
Please advise
Thanks
Anes