Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions src/jspdf.js
Original file line number Diff line number Diff line change
Expand Up @@ -1057,6 +1057,13 @@ var jsPDF = (function (global) {
// convert grayscale value to rgb so that it can be converted to hex for consistency
var floatVal = parseFloat(colorEncoded[0]);
colorEncoded = [floatVal, floatVal, floatVal, 'r'];
} else if (colorEncoded.length === 5 && (colorEncoded[4] === 'k' || colorEncoded[4] === 'K')) {
// convert CMYK values to rbg so that it can be converted to hex for consistency
var red = (1.0 - colorEncoded[0]) * (1.0 - colorEncoded[3]);
var green = (1.0 - colorEncoded[1]) * (1.0 - colorEncoded[3]);
var blue = (1.0 - colorEncoded[2]) * (1.0 - colorEncoded[3]);

colorEncoded = [red, green, blue, 'r'];
}
var colorAsRGB = '#';
for (var i = 0; i < 3; i++) {
Expand Down Expand Up @@ -1143,11 +1150,11 @@ var jsPDF = (function (global) {
} else {
switch (options.precision) {
case 2:
color = [f2(ch1 / 255), f2(ch2 / 255), f2(ch3 / 255), f2(ch4 / 255), letterArray[2]].join(" ");
color = [f2(ch1), f2(ch2), f2(ch3), f2(ch4), letterArray[2]].join(" ");
break;
case 3:
default:
color = [f3(ch1 / 255), f3(ch2 / 255), f3(ch3 / 255), f3(ch4 / 255), letterArray[2]].join(" ");
color = [f3(ch1), f3(ch2), f3(ch3), f3(ch4), letterArray[2]].join(" ");
}
}
}
Expand Down
26 changes: 21 additions & 5 deletions tests/init/jspdf.unit.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -629,6 +629,7 @@ describe('jsPDF unit tests', () => {
doc.__private__.setTextColor(255,0,0);
expect(doc.__private__.getTextColor()).toEqual('#ff0000');
});

it('jsPDF private function getFillColor', () => {
const doc = jsPDF();
expect(doc.__private__.getFillColor()).toEqual('#000000')
Expand Down Expand Up @@ -669,14 +670,29 @@ describe('jsPDF unit tests', () => {
expect(doc.__private__.encodeColorString({ch1: '1.000', ch2: '0.000', ch3: '0.000'})).toEqual('1.000 0.000 0.000 rg');
expect(doc.__private__.encodeColorString({ch1: 255, ch2: 0, ch3: 0, ch4: {a: 0}})).toEqual('1.000 1.000 1.000 rg');
expect(doc.__private__.encodeColorString({ch1: 255, ch2: 0, ch3: 0, ch4: {a: 0.5}})).toEqual('1.000 0.000 0.000 rg');
expect(doc.__private__.encodeColorString({ch1: 255, ch2: 0, ch3: 0, ch4: 255})).toEqual('1.000 0.000 0.000 1.000 k');
expect(doc.__private__.encodeColorString({ch1: '1.000', ch2: '0.000', ch3: '0.000', ch4: '1.000'})).toEqual('1.000 0.000 0.000 1.000 k');
expect(doc.__private__.encodeColorString({ch1: 255, ch2: 0, ch3: 0, ch4: 255, precision: 3})).toEqual('1.000 0.000 0.000 1.000 k');
expect(doc.__private__.encodeColorString({ch1: 255, ch2: 0, ch3: 0, ch4: 255, precision: 2})).toEqual('1.00 0.00 0.00 1.00 k');
expect(doc.__private__.encodeColorString({ch1: 1.0, ch2: 0.0, ch3: 0.0, ch4: 1.0, precision: 3})).toEqual('1.000 0.000 0.000 1.000 k');
expect(doc.__private__.encodeColorString({ch1: 1.0, ch2: 0.0, ch3: 0.0, ch4: 1.0, precision: 2})).toEqual('1.00 0.00 0.00 1.00 k');
expect(doc.__private__.encodeColorString({ch1: 0.4, ch2: 0.2, ch3: 0.4, ch4: 0.1, precision: 2})).toEqual('0.40 0.20 0.40 0.10 k');
expect(function() {doc.__private__.encodeColorString('invalid');}).toThrow(new Error('Invalid color "invalid" passed to jsPDF.encodeColorString.'));
});



it('jsPDF private function decodeColorString', () => {
const doc = jsPDF();
expect(doc.__private__.decodeColorString('1.000 0.000 0.000 rg')).toEqual('#ff0000');
expect(doc.__private__.decodeColorString('1.00 0.00 0.00 rg')).toEqual('#ff0000');
expect(doc.__private__.decodeColorString('1.00 1.00 0.00 RG')).toEqual('#ffff00');
expect(doc.__private__.decodeColorString('1.00 1.00 1.00 RG')).toEqual('#ffffff');
expect(doc.__private__.decodeColorString('0.00 0.00 1.00 rg')).toEqual('#0000ff');
expect(doc.__private__.decodeColorString('0.33 0.10 1.00 rg')).toEqual('#5419ff');
expect(doc.__private__.decodeColorString('0 g')).toEqual('#000000');
expect(doc.__private__.decodeColorString('0 G')).toEqual('#000000');
expect(doc.__private__.decodeColorString('0.39 G')).toEqual('#636363');
expect(doc.__private__.decodeColorString('1.0 G')).toEqual('#ffffff');
expect(doc.__private__.decodeColorString('0.32 0.67 0.10 0.32 k')).toEqual('#75399c');
expect(doc.__private__.decodeColorString('1.00 0.00 0.00 0.00 K')).toEqual('#00ffff');
expect(doc.__private__.decodeColorString('1.00 0.00 1.00 0.00 K')).toEqual('#00ff00');
});

it('jsPDF private function getDocumentProperty, setDocumentProperty', () => {
const doc = jsPDF();
Expand Down