Merge pull request #4511 from prometheansacrifice/parsing-goodytwoshoes-pdf

Fix for #3181: jbig2 encoding for number of instances greater than 1
This commit is contained in:
Yury Delendik 2014-03-26 07:28:06 -05:00
commit 9a36184dfa

View File

@ -445,16 +445,28 @@ var Jbig2Image = (function Jbig2ImageClosure() {
// 6.5.8.2 Refinement/aggregate-coded symbol bitmap // 6.5.8.2 Refinement/aggregate-coded symbol bitmap
var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder); var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder);
if (numberOfInstances > 1) { if (numberOfInstances > 1) {
error('JBIG2 error: number of instances > 1 is not supported'); bitmap = decodeTextRegion(huffman, refinement,
} currentWidth, currentHeight, 0,
var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); numberOfInstances, 1, //strip size
var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3 symbols.concat(newSymbols),
var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4 symbolCodeLength,
var symbol = (symbolId < symbols.length ? symbols[symbolId] : 0, //transposed
newSymbols[symbolId - symbols.length]); 0, //ds offset
bitmap = decodeRefinement(currentWidth, currentHeight, 1, //top left 7.4.3.1.1
0, //OR operator
huffmanTables,
refinementTemplateIndex, refinementAt,
decodingContext);
} else {
var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);
var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3
var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4
var symbol = (symbolId < symbols.length ? symbols[symbolId] :
newSymbols[symbolId - symbols.length]);
bitmap = decodeRefinement(currentWidth, currentHeight,
refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt,
decodingContext); decodingContext);
}
} else { } else {
// 6.5.8.1 Direct-coded symbol bitmap // 6.5.8.1 Direct-coded symbol bitmap
bitmap = decodeBitmap(false, currentWidth, currentHeight, bitmap = decodeBitmap(false, currentWidth, currentHeight,