Merge remote branch 'upstream/master'
This commit is contained in:
commit
25d4fb0d81
72
pdf.js
72
pdf.js
@ -4331,7 +4331,7 @@ var PartialEvaluator = (function() {
|
||||
var startRange = tokens[j];
|
||||
var endRange = tokens[j + 1];
|
||||
var code = tokens[j + 2];
|
||||
while(startRange < endRange) {
|
||||
while (startRange < endRange) {
|
||||
encodingMap[startRange] = code++;
|
||||
++startRange;
|
||||
}
|
||||
@ -4365,9 +4365,9 @@ var PartialEvaluator = (function() {
|
||||
case 0x5D:
|
||||
// collect array items
|
||||
var items = [], item;
|
||||
while (tokens.length && (item = tokens.pop()) != beginArrayToken) {
|
||||
while (tokens.length &&
|
||||
(item = tokens.pop()) != beginArrayToken)
|
||||
items.unshift(item);
|
||||
}
|
||||
tokens.push(items);
|
||||
break;
|
||||
}
|
||||
@ -5359,9 +5359,10 @@ var SeparationCS = (function() {
|
||||
var tinted = this.tintFn.func(color);
|
||||
return this.base.getRgb(tinted);
|
||||
},
|
||||
getRgbBuffer: function sepcs_getRgbBuffer(input) {
|
||||
getRgbBuffer: function sepcs_getRgbBuffer(input, bits) {
|
||||
var tintFn = this.tintFn;
|
||||
var base = this.base;
|
||||
var scale = 1 / ((1 << bits) - 1);
|
||||
|
||||
var length = 3 * input.length;
|
||||
var pos = 0;
|
||||
@ -5369,12 +5370,12 @@ var SeparationCS = (function() {
|
||||
var numComps = base.numComps;
|
||||
var baseBuf = new Uint8Array(numComps * input.length);
|
||||
for (var i = 0, ii = input.length; i < ii; ++i) {
|
||||
var scaled = input[i] / 255;
|
||||
var scaled = input[i] * scale;
|
||||
var tinted = tintFn.func([scaled]);
|
||||
for (var j = 0; j < numComps; ++j)
|
||||
baseBuf[pos++] = 255 * tinted[j];
|
||||
}
|
||||
return base.getRgbBuffer(baseBuf);
|
||||
return base.getRgbBuffer(baseBuf, 8);
|
||||
|
||||
}
|
||||
};
|
||||
@ -5443,7 +5444,7 @@ var IndexedCS = (function() {
|
||||
}
|
||||
}
|
||||
|
||||
return base.getRgbBuffer(baseBuf);
|
||||
return base.getRgbBuffer(baseBuf, 8);
|
||||
}
|
||||
};
|
||||
return constructor;
|
||||
@ -5461,11 +5462,12 @@ var DeviceGrayCS = (function() {
|
||||
var c = color[0];
|
||||
return [c, c, c];
|
||||
},
|
||||
getRgbBuffer: function graycs_getRgbBuffer(input) {
|
||||
getRgbBuffer: function graycs_getRgbBuffer(input, bits) {
|
||||
var scale = 255 / ((1 << bits) - 1);
|
||||
var length = input.length * 3;
|
||||
var rgbBuf = new Uint8Array(length);
|
||||
for (var i = 0, j = 0; i < length; ++i) {
|
||||
var c = input[i];
|
||||
var c = (scale * input[i]) | 0;
|
||||
rgbBuf[j++] = c;
|
||||
rgbBuf[j++] = c;
|
||||
rgbBuf[j++] = c;
|
||||
@ -5477,7 +5479,7 @@ var DeviceGrayCS = (function() {
|
||||
})();
|
||||
|
||||
var DeviceRgbCS = (function() {
|
||||
function constructor() {
|
||||
function constructor(bits) {
|
||||
this.name = 'DeviceRGB';
|
||||
this.numComps = 3;
|
||||
this.defaultColor = [0, 0, 0];
|
||||
@ -5486,8 +5488,15 @@ var DeviceRgbCS = (function() {
|
||||
getRgb: function rgbcs_getRgb(color) {
|
||||
return color;
|
||||
},
|
||||
getRgbBuffer: function rgbcs_getRgbBuffer(input) {
|
||||
return input;
|
||||
getRgbBuffer: function rgbcs_getRgbBuffer(input, bits) {
|
||||
if (bits == 8)
|
||||
return input;
|
||||
var scale = 255 / ((1 << bits) - 1);
|
||||
var i, length = input.length;
|
||||
var rgbBuf = new Uint8Array(length);
|
||||
for (i = 0; i < length; ++i)
|
||||
rgbBuf[i] = (scale * input[i]) | 0;
|
||||
return rgbBuf;
|
||||
}
|
||||
};
|
||||
return constructor;
|
||||
@ -5554,7 +5563,8 @@ var DeviceCmykCS = (function() {
|
||||
|
||||
return [r, g, b];
|
||||
},
|
||||
getRgbBuffer: function cmykcs_getRgbBuffer(colorBuf) {
|
||||
getRgbBuffer: function cmykcs_getRgbBuffer(colorBuf, bits) {
|
||||
var scale = 1 / ((1 << bits) - 1);
|
||||
var length = colorBuf.length / 4;
|
||||
var rgbBuf = new Uint8Array(length * 3);
|
||||
var rgbBufPos = 0;
|
||||
@ -5563,7 +5573,7 @@ var DeviceCmykCS = (function() {
|
||||
for (var i = 0; i < length; i++) {
|
||||
var cmyk = [];
|
||||
for (var j = 0; j < 4; ++j)
|
||||
cmyk.push(colorBuf[colorBufPos++] / 255);
|
||||
cmyk.push(scale * colorBuf[colorBufPos++]);
|
||||
|
||||
var rgb = this.getRgb(cmyk);
|
||||
for (var j = 0; j < 3; ++j)
|
||||
@ -5946,13 +5956,14 @@ var PDFImage = (function() {
|
||||
|
||||
var length = width * height;
|
||||
var bufferPos = 0;
|
||||
var output = new Uint8Array(length);
|
||||
var output = bpc <= 8 ? new Uint8Array(length) :
|
||||
bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length);
|
||||
|
||||
if (bpc == 1) {
|
||||
var valueZero = 0, valueOne = 255;
|
||||
var valueZero = 0, valueOne = 1;
|
||||
if (decodeMap) {
|
||||
valueZero = decodeMap[0] ? 255 : 0;
|
||||
valueOne = decodeMap[1] ? 255 : 0;
|
||||
valueZero = decodeMap[0] ? 1 : 0;
|
||||
valueOne = decodeMap[1] ? 1 : 0;
|
||||
}
|
||||
var rowComps = width * numComps;
|
||||
var mask = 0;
|
||||
@ -5977,25 +5988,22 @@ var PDFImage = (function() {
|
||||
if (decodeMap != null)
|
||||
TODO('interpolate component values');
|
||||
var rowComps = width * numComps;
|
||||
var bits = 0;
|
||||
var buf = 0;
|
||||
|
||||
var bits, buf;
|
||||
for (var i = 0, ii = length; i < ii; ++i) {
|
||||
if (i % rowComps == 0) {
|
||||
buf = 0;
|
||||
bits = 0;
|
||||
}
|
||||
|
||||
while (bits < bpc) {
|
||||
buf = (buf << 8) | buffer[bufferPos++];
|
||||
bits += 8;
|
||||
}
|
||||
var remainingBits = bits - bpc;
|
||||
var ret = buf >> remainingBits;
|
||||
|
||||
if (i % rowComps == 0) {
|
||||
buf = 0;
|
||||
bits = 0;
|
||||
} else {
|
||||
buf = buf & ((1 << remainingBits) - 1);
|
||||
bits = remainingBits;
|
||||
}
|
||||
output[i] = Math.round(255 * ret / ((1 << bpc) - 1));
|
||||
var remainingBits = bits - bpc;
|
||||
output[i] = buf >> remainingBits;
|
||||
buf = buf & ((1 << remainingBits) - 1);
|
||||
bits = remainingBits;
|
||||
}
|
||||
}
|
||||
return output;
|
||||
@ -6055,7 +6063,7 @@ var PDFImage = (function() {
|
||||
var imgArray = this.image.getBytes(height * rowBytes);
|
||||
|
||||
var comps = this.colorSpace.getRgbBuffer(
|
||||
this.getComponents(imgArray, decodeMap));
|
||||
this.getComponents(imgArray, decodeMap), bpc);
|
||||
var compsPos = 0;
|
||||
var opacity = this.getOpacity();
|
||||
var opacityPos = 0;
|
||||
|
1
test/pdfs/pdkids.pdf.link
Normal file
1
test/pdfs/pdkids.pdf.link
Normal file
@ -0,0 +1 @@
|
||||
http://www.archive.org/download/PdKids/PdKids.pdf
|
@ -103,5 +103,11 @@
|
||||
"link": true,
|
||||
"rounds": 1,
|
||||
"type": "eq"
|
||||
},
|
||||
{ "id": "pdkids",
|
||||
"file": "pdfs/pdkids.pdf",
|
||||
"link": true,
|
||||
"rounds": 1,
|
||||
"type": "eq"
|
||||
}
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user