Use the Alternate entry, if it exists, in ICCBased Colour Space dictionaries (issue 5836, issue 5939, issue 6055)
Fixes 5836. Fixes 5939. Fixes 6055.
This commit is contained in:
parent
bf20334bea
commit
bc5e43b45c
@ -262,7 +262,7 @@ var ColorSpace = (function ColorSpaceClosure() {
|
||||
} else if (isArray(cs)) {
|
||||
mode = xref.fetchIfRef(cs[0]).name;
|
||||
this.mode = mode;
|
||||
var numComps, params;
|
||||
var numComps, params, alt;
|
||||
|
||||
switch (mode) {
|
||||
case 'DeviceGray':
|
||||
@ -284,6 +284,17 @@ var ColorSpace = (function ColorSpaceClosure() {
|
||||
var stream = xref.fetchIfRef(cs[1]);
|
||||
var dict = stream.dict;
|
||||
numComps = dict.get('N');
|
||||
alt = dict.get('Alternate');
|
||||
if (alt) {
|
||||
var altIR = ColorSpace.parseToIR(alt, xref, res);
|
||||
// Parse the /Alternate CS to ensure that the number of components
|
||||
// are correct, and also (indirectly) that it is not a PatternCS.
|
||||
var altCS = ColorSpace.fromIR(altIR);
|
||||
if (altCS.numComps === numComps) {
|
||||
return altIR;
|
||||
}
|
||||
warn('ICCBased color space: Ignoring incorrect /Alternate entry.');
|
||||
}
|
||||
if (numComps === 1) {
|
||||
return 'DeviceGrayCS';
|
||||
} else if (numComps === 3) {
|
||||
@ -316,11 +327,11 @@ var ColorSpace = (function ColorSpaceClosure() {
|
||||
} else if (isArray(name)) {
|
||||
numComps = name.length;
|
||||
}
|
||||
var alt = ColorSpace.parseToIR(cs[2], xref, res);
|
||||
alt = ColorSpace.parseToIR(cs[2], xref, res);
|
||||
var tintFnIR = PDFFunction.getIR(xref, xref.fetchIfRef(cs[3]));
|
||||
return ['AlternateCS', numComps, alt, tintFnIR];
|
||||
case 'Lab':
|
||||
params = cs[1].getAll();
|
||||
params = xref.fetchIfRef(cs[1]).getAll();
|
||||
return ['LabCS', params];
|
||||
default:
|
||||
error('unimplemented color space object "' + mode + '"');
|
||||
|
1
test/pdfs/issue5939.pdf.link
Normal file
1
test/pdfs/issue5939.pdf.link
Normal file
@ -0,0 +1 @@
|
||||
http://web.archive.org/web/20150613184455/https://www.usenix.org/system/files/login/articles/login_apr15_02_grosvenor_041315.pdf
|
@ -728,6 +728,15 @@
|
||||
"rounds": 1,
|
||||
"type": "eq"
|
||||
},
|
||||
{ "id": "issue5939",
|
||||
"file": "pdfs/issue5939.pdf",
|
||||
"md5": "43c61e06ad407c158763f0860c99bb04",
|
||||
"rounds": 1,
|
||||
"link": true,
|
||||
"firstPage": 1,
|
||||
"lastPage": 1,
|
||||
"type": "eq"
|
||||
},
|
||||
{ "id": "cmykjpeg",
|
||||
"file": "pdfs/cmykjpeg.pdf",
|
||||
"md5": "85d162b48ce98503a382d96f574f70a2",
|
||||
|
Loading…
Reference in New Issue
Block a user