Skip to content

Commit

Permalink
Uint8Array AddImage Support (#1918)
Browse files Browse the repository at this point in the history
Make getImageFileTypeByImageData() ArrayBuffer compatible
  • Loading branch information
Uzlopak committed Aug 31, 2018
1 parent 88f7d07 commit bcf14ed
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
4 changes: 4 additions & 0 deletions plugins/addimage.js
Expand Up @@ -78,6 +78,10 @@
var compareResult;
var fileType;

if (jsPDFAPI.isArrayBufferView(imageData)) {
imageData = jsPDFAPI.arrayBufferToBinaryString(imageData);
}

for (fileType in imageFileTypeHeaders) {
headerSchemata = imageFileTypeHeaders[fileType];
for (i = 0; i < headerSchemata.length; i += 1) {
Expand Down
42 changes: 42 additions & 0 deletions tests/addimage/Uint8Array.spec.js
@@ -0,0 +1,42 @@
'use strict'
/* global describe, it, jsPDF, comparePdf, expect */
/**
* Standard spec tests
*/

describe('Plugin: addimage filetypeRecognition', () => {


function convertDataURIToBinary(dataURI) {
var BASE64_MARKER = ';base64,';
var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
var base64 = dataURI.substring(base64Index);
var raw = window.atob(base64);
var rawLength = raw.length;
var array = new Uint8Array(new ArrayBuffer(rawLength));
var i = 0;

for(i = 0; i < rawLength; i++) {
array[i] = raw.charCodeAt(i);
}
return array;
}

var jpgImage = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAABAAEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+f+iiigD/2Q==';
var jpgImageUint8Array = convertDataURIToBinary(jpgImage);

it('Uint8Array: getImageFileTypeByImageData', () => {
expect(jsPDF.API.getImageFileTypeByImageData(jpgImageUint8Array)).toEqual("JPEG");
});

it('Uint8Array: addImagae', () => {
const doc = new jsPDF('p', 'pt', 'a4', false);
doc.addImage(jpgImageUint8Array, 'JPEG', 15, 40, 1, 1);

comparePdf(doc.output(), 'blackpixel.pdf', 'addimage')
});




});

0 comments on commit bcf14ed

Please sign in to comment.