/ * C o p y r i g h t 2 0 1 7 M o z i l l a F o u n d a t i o n
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
* /
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . warn = exports . utf8StringToString = exports . stringToUTF8String = exports . stringToPDFString = exports . stringToBytes = exports . string32 = exports . shadow = exports . setVerbosityLevel = exports . ReadableStream = exports . removeNullCharacters = exports . readUint32 = exports . readUint16 = exports . readInt8 = exports . log2 = exports . loadJpegStream = exports . isEvalSupported = exports . isLittleEndian = exports . createValidAbsoluteUrl = exports . isSameOrigin = exports . isNodeJS = exports . isSpace = exports . isString = exports . isNum = exports . isInt = exports . isEmptyObj = exports . isBool = exports . isArrayBuffer = exports . isArray = exports . info = exports . globalScope = exports . getVerbosityLevel = exports . getLookupTableFactory = exports . error = exports . deprecated = exports . createObjectURL = exports . createPromiseCapability = exports . createBlob = exports . bytesToString = exports . assert = exports . arraysToBytes = exports . arrayByteLength = exports . XRefParseException = exports . Util = exports . UnknownErrorException = exports . UnexpectedResponseException = exports . TextRenderingMode = exports . StreamType = exports . StatTimer = exports . PasswordResponses = exports . PasswordException = exports . PageViewport = exports . NotImplementedException = exports . NativeImageDecoding = exports . MissingPDFException = exports . MissingDataException = exports . MessageHandler = exports . InvalidPDFException = exports . CMapCompressionType = exports . ImageKind = exports . FontType = exports . AnnotationType = exports . AnnotationFlag = exports . AnnotationFieldFlag = exports . AnnotationBorderStyleType = exports . UNSUPPORTED _FEATURES = exports . VERBOSITY _LEVELS = exports . OPS = exports . IDENTITY _MATRIX = exports . FONT _IDENTITY _MATRIX = undefined ;
var _typeof = typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ? function ( obj ) { return typeof obj ; } : function ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ;
require ( './compatibility' ) ;
var _streamsLib = require ( '../../external/streams/streams-lib' ) ;
var globalScope = typeof window !== 'undefined' && window . Math === Math ? window : typeof global !== 'undefined' && global . Math === Math ? global : typeof self !== 'undefined' && self . Math === Math ? self : undefined ;
var FONT _IDENTITY _MATRIX = [ 0.001 , 0 , 0 , 0.001 , 0 , 0 ] ;
var NativeImageDecoding = {
NONE : 'none' ,
DECODE : 'decode' ,
DISPLAY : 'display'
} ;
var TextRenderingMode = {
FILL : 0 ,
STROKE : 1 ,
FILL _STROKE : 2 ,
INVISIBLE : 3 ,
FILL _ADD _TO _PATH : 4 ,
STROKE _ADD _TO _PATH : 5 ,
FILL _STROKE _ADD _TO _PATH : 6 ,
ADD _TO _PATH : 7 ,
FILL _STROKE _MASK : 3 ,
ADD _TO _PATH _FLAG : 4
} ;
var ImageKind = {
GRAYSCALE _1BPP : 1 ,
RGB _24BPP : 2 ,
RGBA _32BPP : 3
} ;
var AnnotationType = {
TEXT : 1 ,
LINK : 2 ,
FREETEXT : 3 ,
LINE : 4 ,
SQUARE : 5 ,
CIRCLE : 6 ,
POLYGON : 7 ,
POLYLINE : 8 ,
HIGHLIGHT : 9 ,
UNDERLINE : 10 ,
SQUIGGLY : 11 ,
STRIKEOUT : 12 ,
STAMP : 13 ,
CARET : 14 ,
INK : 15 ,
POPUP : 16 ,
FILEATTACHMENT : 17 ,
SOUND : 18 ,
MOVIE : 19 ,
WIDGET : 20 ,
SCREEN : 21 ,
PRINTERMARK : 22 ,
TRAPNET : 23 ,
WATERMARK : 24 ,
THREED : 25 ,
REDACT : 26
} ;
var AnnotationFlag = {
INVISIBLE : 0x01 ,
HIDDEN : 0x02 ,
PRINT : 0x04 ,
NOZOOM : 0x08 ,
NOROTATE : 0x10 ,
NOVIEW : 0x20 ,
READONLY : 0x40 ,
LOCKED : 0x80 ,
TOGGLENOVIEW : 0x100 ,
LOCKEDCONTENTS : 0x200
} ;
var AnnotationFieldFlag = {
READONLY : 0x0000001 ,
REQUIRED : 0x0000002 ,
NOEXPORT : 0x0000004 ,
MULTILINE : 0x0001000 ,
PASSWORD : 0x0002000 ,
NOTOGGLETOOFF : 0x0004000 ,
RADIO : 0x0008000 ,
PUSHBUTTON : 0x0010000 ,
COMBO : 0x0020000 ,
EDIT : 0x0040000 ,
SORT : 0x0080000 ,
FILESELECT : 0x0100000 ,
MULTISELECT : 0x0200000 ,
DONOTSPELLCHECK : 0x0400000 ,
DONOTSCROLL : 0x0800000 ,
COMB : 0x1000000 ,
RICHTEXT : 0x2000000 ,
RADIOSINUNISON : 0x2000000 ,
COMMITONSELCHANGE : 0x4000000
} ;
var AnnotationBorderStyleType = {
SOLID : 1 ,
DASHED : 2 ,
BEVELED : 3 ,
INSET : 4 ,
UNDERLINE : 5
} ;
var StreamType = {
UNKNOWN : 0 ,
FLATE : 1 ,
LZW : 2 ,
DCT : 3 ,
JPX : 4 ,
JBIG : 5 ,
A85 : 6 ,
AHX : 7 ,
CCF : 8 ,
RL : 9
} ;
var FontType = {
UNKNOWN : 0 ,
TYPE1 : 1 ,
TYPE1C : 2 ,
CIDFONTTYPE0 : 3 ,
CIDFONTTYPE0C : 4 ,
TRUETYPE : 5 ,
CIDFONTTYPE2 : 6 ,
TYPE3 : 7 ,
OPENTYPE : 8 ,
TYPE0 : 9 ,
MMTYPE1 : 10
} ;
var VERBOSITY _LEVELS = {
errors : 0 ,
warnings : 1 ,
infos : 5
} ;
var CMapCompressionType = {
NONE : 0 ,
BINARY : 1 ,
STREAM : 2
} ;
var OPS = {
dependency : 1 ,
setLineWidth : 2 ,
setLineCap : 3 ,
setLineJoin : 4 ,
setMiterLimit : 5 ,
setDash : 6 ,
setRenderingIntent : 7 ,
setFlatness : 8 ,
setGState : 9 ,
save : 10 ,
restore : 11 ,
transform : 12 ,
moveTo : 13 ,
lineTo : 14 ,
curveTo : 15 ,
curveTo2 : 16 ,
curveTo3 : 17 ,
closePath : 18 ,
rectangle : 19 ,
stroke : 20 ,
closeStroke : 21 ,
fill : 22 ,
eoFill : 23 ,
fillStroke : 24 ,
eoFillStroke : 25 ,
closeFillStroke : 26 ,
closeEOFillStroke : 27 ,
endPath : 28 ,
clip : 29 ,
eoClip : 30 ,
beginText : 31 ,
endText : 32 ,
setCharSpacing : 33 ,
setWordSpacing : 34 ,
setHScale : 35 ,
setLeading : 36 ,
setFont : 37 ,
setTextRenderingMode : 38 ,
setTextRise : 39 ,
moveText : 40 ,
setLeadingMoveText : 41 ,
setTextMatrix : 42 ,
nextLine : 43 ,
showText : 44 ,
showSpacedText : 45 ,
nextLineShowText : 46 ,
nextLineSetSpacingShowText : 47 ,
setCharWidth : 48 ,
setCharWidthAndBounds : 49 ,
setStrokeColorSpace : 50 ,
setFillColorSpace : 51 ,
setStrokeColor : 52 ,
setStrokeColorN : 53 ,
setFillColor : 54 ,
setFillColorN : 55 ,
setStrokeGray : 56 ,
setFillGray : 57 ,
setStrokeRGBColor : 58 ,
setFillRGBColor : 59 ,
setStrokeCMYKColor : 60 ,
setFillCMYKColor : 61 ,
shadingFill : 62 ,
beginInlineImage : 63 ,
beginImageData : 64 ,
endInlineImage : 65 ,
paintXObject : 66 ,
markPoint : 67 ,
markPointProps : 68 ,
beginMarkedContent : 69 ,
beginMarkedContentProps : 70 ,
endMarkedContent : 71 ,
beginCompat : 72 ,
endCompat : 73 ,
paintFormXObjectBegin : 74 ,
paintFormXObjectEnd : 75 ,
beginGroup : 76 ,
endGroup : 77 ,
beginAnnotations : 78 ,
endAnnotations : 79 ,
beginAnnotation : 80 ,
endAnnotation : 81 ,
paintJpegXObject : 82 ,
paintImageMaskXObject : 83 ,
paintImageMaskXObjectGroup : 84 ,
paintImageXObject : 85 ,
paintInlineImageXObject : 86 ,
paintInlineImageXObjectGroup : 87 ,
paintImageXObjectRepeat : 88 ,
paintImageMaskXObjectRepeat : 89 ,
paintSolidColorImageMask : 90 ,
constructPath : 91
} ;
var verbosity = VERBOSITY _LEVELS . warnings ;
function setVerbosityLevel ( level ) {
verbosity = level ;
}
function getVerbosityLevel ( ) {
return verbosity ;
}
function info ( msg ) {
if ( verbosity >= VERBOSITY _LEVELS . infos ) {
console . log ( 'Info: ' + msg ) ;
}
}
function warn ( msg ) {
if ( verbosity >= VERBOSITY _LEVELS . warnings ) {
console . log ( 'Warning: ' + msg ) ;
}
}
function deprecated ( details ) {
console . log ( 'Deprecated API usage: ' + details ) ;
}
function error ( msg ) {
if ( verbosity >= VERBOSITY _LEVELS . errors ) {
console . log ( 'Error: ' + msg ) ;
console . log ( backtrace ( ) ) ;
}
throw new Error ( msg ) ;
}
function backtrace ( ) {
try {
throw new Error ( ) ;
} catch ( e ) {
return e . stack ? e . stack . split ( '\n' ) . slice ( 2 ) . join ( '\n' ) : '' ;
}
}
function assert ( cond , msg ) {
if ( ! cond ) {
error ( msg ) ;
}
}
var UNSUPPORTED _FEATURES = {
unknown : 'unknown' ,
forms : 'forms' ,
javaScript : 'javaScript' ,
smask : 'smask' ,
shadingPattern : 'shadingPattern' ,
font : 'font'
} ;
function isSameOrigin ( baseUrl , otherUrl ) {
try {
var base = new URL ( baseUrl ) ;
if ( ! base . origin || base . origin === 'null' ) {
return false ;
}
} catch ( e ) {
return false ;
}
var other = new URL ( otherUrl , base ) ;
return base . origin === other . origin ;
}
function isValidProtocol ( url ) {
if ( ! url ) {
return false ;
}
switch ( url . protocol ) {
case 'http:' :
case 'https:' :
case 'ftp:' :
case 'mailto:' :
case 'tel:' :
return true ;
default :
return false ;
}
}
function createValidAbsoluteUrl ( url , baseUrl ) {
if ( ! url ) {
return null ;
}
try {
var absoluteUrl = baseUrl ? new URL ( url , baseUrl ) : new URL ( url ) ;
if ( isValidProtocol ( absoluteUrl ) ) {
return absoluteUrl ;
}
} catch ( ex ) { }
return null ;
}
function shadow ( obj , prop , value ) {
Object . defineProperty ( obj , prop , {
value : value ,
enumerable : true ,
configurable : true ,
writable : false
} ) ;
return value ;
}
function getLookupTableFactory ( initializer ) {
var lookup ;
return function ( ) {
if ( initializer ) {
lookup = Object . create ( null ) ;
initializer ( lookup ) ;
initializer = null ;
}
return lookup ;
} ;
}
var PasswordResponses = {
NEED _PASSWORD : 1 ,
INCORRECT _PASSWORD : 2
} ;
var PasswordException = function PasswordExceptionClosure ( ) {
function PasswordException ( msg , code ) {
this . name = 'PasswordException' ;
this . message = msg ;
this . code = code ;
}
PasswordException . prototype = new Error ( ) ;
PasswordException . constructor = PasswordException ;
return PasswordException ;
} ( ) ;
var UnknownErrorException = function UnknownErrorExceptionClosure ( ) {
function UnknownErrorException ( msg , details ) {
this . name = 'UnknownErrorException' ;
this . message = msg ;
this . details = details ;
}
UnknownErrorException . prototype = new Error ( ) ;
UnknownErrorException . constructor = UnknownErrorException ;
return UnknownErrorException ;
} ( ) ;
var InvalidPDFException = function InvalidPDFExceptionClosure ( ) {
function InvalidPDFException ( msg ) {
this . name = 'InvalidPDFException' ;
this . message = msg ;
}
InvalidPDFException . prototype = new Error ( ) ;
InvalidPDFException . constructor = InvalidPDFException ;
return InvalidPDFException ;
} ( ) ;
var MissingPDFException = function MissingPDFExceptionClosure ( ) {
function MissingPDFException ( msg ) {
this . name = 'MissingPDFException' ;
this . message = msg ;
}
MissingPDFException . prototype = new Error ( ) ;
MissingPDFException . constructor = MissingPDFException ;
return MissingPDFException ;
} ( ) ;
var UnexpectedResponseException = function UnexpectedResponseExceptionClosure ( ) {
function UnexpectedResponseException ( msg , status ) {
this . name = 'UnexpectedResponseException' ;
this . message = msg ;
this . status = status ;
}
UnexpectedResponseException . prototype = new Error ( ) ;
UnexpectedResponseException . constructor = UnexpectedResponseException ;
return UnexpectedResponseException ;
} ( ) ;
var NotImplementedException = function NotImplementedExceptionClosure ( ) {
function NotImplementedException ( msg ) {
this . message = msg ;
}
NotImplementedException . prototype = new Error ( ) ;
NotImplementedException . prototype . name = 'NotImplementedException' ;
NotImplementedException . constructor = NotImplementedException ;
return NotImplementedException ;
} ( ) ;
var MissingDataException = function MissingDataExceptionClosure ( ) {
function MissingDataException ( begin , end ) {
this . begin = begin ;
this . end = end ;
this . message = 'Missing data [' + begin + ', ' + end + ')' ;
}
MissingDataException . prototype = new Error ( ) ;
MissingDataException . prototype . name = 'MissingDataException' ;
MissingDataException . constructor = MissingDataException ;
return MissingDataException ;
} ( ) ;
var XRefParseException = function XRefParseExceptionClosure ( ) {
function XRefParseException ( msg ) {
this . message = msg ;
}
XRefParseException . prototype = new Error ( ) ;
XRefParseException . prototype . name = 'XRefParseException' ;
XRefParseException . constructor = XRefParseException ;
return XRefParseException ;
} ( ) ;
var NullCharactersRegExp = /\x00/g ;
function removeNullCharacters ( str ) {
if ( typeof str !== 'string' ) {
warn ( 'The argument for removeNullCharacters must be a string.' ) ;
return str ;
}
return str . replace ( NullCharactersRegExp , '' ) ;
}
function bytesToString ( bytes ) {
assert ( bytes !== null && ( typeof bytes === 'undefined' ? 'undefined' : _typeof ( bytes ) ) === 'object' && bytes . length !== undefined , 'Invalid argument for bytesToString' ) ;
var length = bytes . length ;
var MAX _ARGUMENT _COUNT = 8192 ;
if ( length < MAX _ARGUMENT _COUNT ) {
return String . fromCharCode . apply ( null , bytes ) ;
}
var strBuf = [ ] ;
for ( var i = 0 ; i < length ; i += MAX _ARGUMENT _COUNT ) {
var chunkEnd = Math . min ( i + MAX _ARGUMENT _COUNT , length ) ;
var chunk = bytes . subarray ( i , chunkEnd ) ;
strBuf . push ( String . fromCharCode . apply ( null , chunk ) ) ;
}
return strBuf . join ( '' ) ;
}
function stringToBytes ( str ) {
assert ( typeof str === 'string' , 'Invalid argument for stringToBytes' ) ;
var length = str . length ;
var bytes = new Uint8Array ( length ) ;
for ( var i = 0 ; i < length ; ++ i ) {
bytes [ i ] = str . charCodeAt ( i ) & 0xFF ;
}
return bytes ;
}
function arrayByteLength ( arr ) {
if ( arr . length !== undefined ) {
return arr . length ;
}
assert ( arr . byteLength !== undefined ) ;
return arr . byteLength ;
}
function arraysToBytes ( arr ) {
if ( arr . length === 1 && arr [ 0 ] instanceof Uint8Array ) {
return arr [ 0 ] ;
}
var resultLength = 0 ;
var i ,
ii = arr . length ;
var item , itemLength ;
for ( i = 0 ; i < ii ; i ++ ) {
item = arr [ i ] ;
itemLength = arrayByteLength ( item ) ;
resultLength += itemLength ;
}
var pos = 0 ;
var data = new Uint8Array ( resultLength ) ;
for ( i = 0 ; i < ii ; i ++ ) {
item = arr [ i ] ;
if ( ! ( item instanceof Uint8Array ) ) {
if ( typeof item === 'string' ) {
item = stringToBytes ( item ) ;
} else {
item = new Uint8Array ( item ) ;
}
}
itemLength = item . byteLength ;
data . set ( item , pos ) ;
pos += itemLength ;
}
return data ;
}
function string32 ( value ) {
return String . fromCharCode ( value >> 24 & 0xff , value >> 16 & 0xff , value >> 8 & 0xff , value & 0xff ) ;
}
function log2 ( x ) {
var n = 1 ,
i = 0 ;
while ( x > n ) {
n <<= 1 ;
i ++ ;
}
return i ;
}
function readInt8 ( data , start ) {
return data [ start ] << 24 >> 24 ;
}
function readUint16 ( data , offset ) {
return data [ offset ] << 8 | data [ offset + 1 ] ;
}
function readUint32 ( data , offset ) {
return ( data [ offset ] << 24 | data [ offset + 1 ] << 16 | data [ offset + 2 ] << 8 | data [ offset + 3 ] ) >>> 0 ;
}
function isLittleEndian ( ) {
var buffer8 = new Uint8Array ( 4 ) ;
buffer8 [ 0 ] = 1 ;
var view32 = new Uint32Array ( buffer8 . buffer , 0 , 1 ) ;
return view32 [ 0 ] === 1 ;
}
function isEvalSupported ( ) {
try {
new Function ( '' ) ;
return true ;
} catch ( e ) {
return false ;
}
}
var IDENTITY _MATRIX = [ 1 , 0 , 0 , 1 , 0 , 0 ] ;
var Util = function UtilClosure ( ) {
function Util ( ) { }
var rgbBuf = [ 'rgb(' , 0 , ',' , 0 , ',' , 0 , ')' ] ;
Util . makeCssRgb = function Util _makeCssRgb ( r , g , b ) {
rgbBuf [ 1 ] = r ;
rgbBuf [ 3 ] = g ;
rgbBuf [ 5 ] = b ;
return rgbBuf . join ( '' ) ;
} ;
Util . transform = function Util _transform ( m1 , m2 ) {
return [ m1 [ 0 ] * m2 [ 0 ] + m1 [ 2 ] * m2 [ 1 ] , m1 [ 1 ] * m2 [ 0 ] + m1 [ 3 ] * m2 [ 1 ] , m1 [ 0 ] * m2 [ 2 ] + m1 [ 2 ] * m2 [ 3 ] , m1 [ 1 ] * m2 [ 2 ] + m1 [ 3 ] * m2 [ 3 ] , m1 [ 0 ] * m2 [ 4 ] + m1 [ 2 ] * m2 [ 5 ] + m1 [ 4 ] , m1 [ 1 ] * m2 [ 4 ] + m1 [ 3 ] * m2 [ 5 ] + m1 [ 5 ] ] ;
} ;
Util . applyTransform = function Util _applyTransform ( p , m ) {
var xt = p [ 0 ] * m [ 0 ] + p [ 1 ] * m [ 2 ] + m [ 4 ] ;
var yt = p [ 0 ] * m [ 1 ] + p [ 1 ] * m [ 3 ] + m [ 5 ] ;
return [ xt , yt ] ;
} ;
Util . applyInverseTransform = function Util _applyInverseTransform ( p , m ) {
var d = m [ 0 ] * m [ 3 ] - m [ 1 ] * m [ 2 ] ;
var xt = ( p [ 0 ] * m [ 3 ] - p [ 1 ] * m [ 2 ] + m [ 2 ] * m [ 5 ] - m [ 4 ] * m [ 3 ] ) / d ;
var yt = ( - p [ 0 ] * m [ 1 ] + p [ 1 ] * m [ 0 ] + m [ 4 ] * m [ 1 ] - m [ 5 ] * m [ 0 ] ) / d ;
return [ xt , yt ] ;
} ;
Util . getAxialAlignedBoundingBox = function Util _getAxialAlignedBoundingBox ( r , m ) {
var p1 = Util . applyTransform ( r , m ) ;
var p2 = Util . applyTransform ( r . slice ( 2 , 4 ) , m ) ;
var p3 = Util . applyTransform ( [ r [ 0 ] , r [ 3 ] ] , m ) ;
var p4 = Util . applyTransform ( [ r [ 2 ] , r [ 1 ] ] , m ) ;
return [ Math . min ( p1 [ 0 ] , p2 [ 0 ] , p3 [ 0 ] , p4 [ 0 ] ) , Math . min ( p1 [ 1 ] , p2 [ 1 ] , p3 [ 1 ] , p4 [ 1 ] ) , Math . max ( p1 [ 0 ] , p2 [ 0 ] , p3 [ 0 ] , p4 [ 0 ] ) , Math . max ( p1 [ 1 ] , p2 [ 1 ] , p3 [ 1 ] , p4 [ 1 ] ) ] ;
} ;
Util . inverseTransform = function Util _inverseTransform ( m ) {
var d = m [ 0 ] * m [ 3 ] - m [ 1 ] * m [ 2 ] ;
return [ m [ 3 ] / d , - m [ 1 ] / d , - m [ 2 ] / d , m [ 0 ] / d , ( m [ 2 ] * m [ 5 ] - m [ 4 ] * m [ 3 ] ) / d , ( m [ 4 ] * m [ 1 ] - m [ 5 ] * m [ 0 ] ) / d ] ;
} ;
Util . apply3dTransform = function Util _apply3dTransform ( m , v ) {
return [ m [ 0 ] * v [ 0 ] + m [ 1 ] * v [ 1 ] + m [ 2 ] * v [ 2 ] , m [ 3 ] * v [ 0 ] + m [ 4 ] * v [ 1 ] + m [ 5 ] * v [ 2 ] , m [ 6 ] * v [ 0 ] + m [ 7 ] * v [ 1 ] + m [ 8 ] * v [ 2 ] ] ;
} ;
Util . singularValueDecompose2dScale = function Util _singularValueDecompose2dScale ( m ) {
var transpose = [ m [ 0 ] , m [ 2 ] , m [ 1 ] , m [ 3 ] ] ;
var a = m [ 0 ] * transpose [ 0 ] + m [ 1 ] * transpose [ 2 ] ;
var b = m [ 0 ] * transpose [ 1 ] + m [ 1 ] * transpose [ 3 ] ;
var c = m [ 2 ] * transpose [ 0 ] + m [ 3 ] * transpose [ 2 ] ;
var d = m [ 2 ] * transpose [ 1 ] + m [ 3 ] * transpose [ 3 ] ;
var first = ( a + d ) / 2 ;
var second = Math . sqrt ( ( a + d ) * ( a + d ) - 4 * ( a * d - c * b ) ) / 2 ;
var sx = first + second || 1 ;
var sy = first - second || 1 ;
return [ Math . sqrt ( sx ) , Math . sqrt ( sy ) ] ;
} ;
Util . normalizeRect = function Util _normalizeRect ( rect ) {
var r = rect . slice ( 0 ) ;
if ( rect [ 0 ] > rect [ 2 ] ) {
r [ 0 ] = rect [ 2 ] ;
r [ 2 ] = rect [ 0 ] ;
}
if ( rect [ 1 ] > rect [ 3 ] ) {
r [ 1 ] = rect [ 3 ] ;
r [ 3 ] = rect [ 1 ] ;
}
return r ;
} ;
Util . intersect = function Util _intersect ( rect1 , rect2 ) {
function compare ( a , b ) {
return a - b ;
}
var orderedX = [ rect1 [ 0 ] , rect1 [ 2 ] , rect2 [ 0 ] , rect2 [ 2 ] ] . sort ( compare ) ,
orderedY = [ rect1 [ 1 ] , rect1 [ 3 ] , rect2 [ 1 ] , rect2 [ 3 ] ] . sort ( compare ) ,
result = [ ] ;
rect1 = Util . normalizeRect ( rect1 ) ;
rect2 = Util . normalizeRect ( rect2 ) ;
if ( orderedX [ 0 ] === rect1 [ 0 ] && orderedX [ 1 ] === rect2 [ 0 ] || orderedX [ 0 ] === rect2 [ 0 ] && orderedX [ 1 ] === rect1 [ 0 ] ) {
result [ 0 ] = orderedX [ 1 ] ;
result [ 2 ] = orderedX [ 2 ] ;
} else {
return false ;
}
if ( orderedY [ 0 ] === rect1 [ 1 ] && orderedY [ 1 ] === rect2 [ 1 ] || orderedY [ 0 ] === rect2 [ 1 ] && orderedY [ 1 ] === rect1 [ 1 ] ) {
result [ 1 ] = orderedY [ 1 ] ;
result [ 3 ] = orderedY [ 2 ] ;
} else {
return false ;
}
return result ;
} ;
Util . sign = function Util _sign ( num ) {
return num < 0 ? - 1 : 1 ;
} ;
var ROMAN _NUMBER _MAP = [ '' , 'C' , 'CC' , 'CCC' , 'CD' , 'D' , 'DC' , 'DCC' , 'DCCC' , 'CM' , '' , 'X' , 'XX' , 'XXX' , 'XL' , 'L' , 'LX' , 'LXX' , 'LXXX' , 'XC' , '' , 'I' , 'II' , 'III' , 'IV' , 'V' , 'VI' , 'VII' , 'VIII' , 'IX' ] ;
Util . toRoman = function Util _toRoman ( number , lowerCase ) {
assert ( isInt ( number ) && number > 0 , 'The number should be a positive integer.' ) ;
var pos ,
romanBuf = [ ] ;
while ( number >= 1000 ) {
number -= 1000 ;
romanBuf . push ( 'M' ) ;
}
pos = number / 100 | 0 ;
number %= 100 ;
romanBuf . push ( ROMAN _NUMBER _MAP [ pos ] ) ;
pos = number / 10 | 0 ;
number %= 10 ;
romanBuf . push ( ROMAN _NUMBER _MAP [ 10 + pos ] ) ;
romanBuf . push ( ROMAN _NUMBER _MAP [ 20 + number ] ) ;
var romanStr = romanBuf . join ( '' ) ;
return lowerCase ? romanStr . toLowerCase ( ) : romanStr ;
} ;
Util . appendToArray = function Util _appendToArray ( arr1 , arr2 ) {
Array . prototype . push . apply ( arr1 , arr2 ) ;
} ;
Util . prependToArray = function Util _prependToArray ( arr1 , arr2 ) {
Array . prototype . unshift . apply ( arr1 , arr2 ) ;
} ;
Util . extendObj = function extendObj ( obj1 , obj2 ) {
for ( var key in obj2 ) {
obj1 [ key ] = obj2 [ key ] ;
}
} ;
Util . getInheritableProperty = function Util _getInheritableProperty ( dict , name , getArray ) {
while ( dict && ! dict . has ( name ) ) {
dict = dict . get ( 'Parent' ) ;
}
if ( ! dict ) {
return null ;
}
return getArray ? dict . getArray ( name ) : dict . get ( name ) ;
} ;
Util . inherit = function Util _inherit ( sub , base , prototype ) {
sub . prototype = Object . create ( base . prototype ) ;
sub . prototype . constructor = sub ;
for ( var prop in prototype ) {
sub . prototype [ prop ] = prototype [ prop ] ;
}
} ;
Util . loadScript = function Util _loadScript ( src , callback ) {
var script = document . createElement ( 'script' ) ;
var loaded = false ;
script . setAttribute ( 'src' , src ) ;
if ( callback ) {
script . onload = function ( ) {
if ( ! loaded ) {
callback ( ) ;
}
loaded = true ;
} ;
}
document . getElementsByTagName ( 'head' ) [ 0 ] . appendChild ( script ) ;
} ;
return Util ;
} ( ) ;
var PageViewport = function PageViewportClosure ( ) {
function PageViewport ( viewBox , scale , rotation , offsetX , offsetY , dontFlip ) {
this . viewBox = viewBox ;
this . scale = scale ;
this . rotation = rotation ;
this . offsetX = offsetX ;
this . offsetY = offsetY ;
var centerX = ( viewBox [ 2 ] + viewBox [ 0 ] ) / 2 ;
var centerY = ( viewBox [ 3 ] + viewBox [ 1 ] ) / 2 ;
var rotateA , rotateB , rotateC , rotateD ;
rotation = rotation % 360 ;
rotation = rotation < 0 ? rotation + 360 : rotation ;
switch ( rotation ) {
case 180 :
rotateA = - 1 ;
rotateB = 0 ;
rotateC = 0 ;
rotateD = 1 ;
break ;
case 90 :
rotateA = 0 ;
rotateB = 1 ;
rotateC = 1 ;
rotateD = 0 ;
break ;
case 270 :
rotateA = 0 ;
rotateB = - 1 ;
rotateC = - 1 ;
rotateD = 0 ;
break ;
default :
rotateA = 1 ;
rotateB = 0 ;
rotateC = 0 ;
rotateD = - 1 ;
break ;
}
if ( dontFlip ) {
rotateC = - rotateC ;
rotateD = - rotateD ;
}
var offsetCanvasX , offsetCanvasY ;
var width , height ;
if ( rotateA === 0 ) {
offsetCanvasX = Math . abs ( centerY - viewBox [ 1 ] ) * scale + offsetX ;
offsetCanvasY = Math . abs ( centerX - viewBox [ 0 ] ) * scale + offsetY ;
width = Math . abs ( viewBox [ 3 ] - viewBox [ 1 ] ) * scale ;
height = Math . abs ( viewBox [ 2 ] - viewBox [ 0 ] ) * scale ;
} else {
offsetCanvasX = Math . abs ( centerX - viewBox [ 0 ] ) * scale + offsetX ;
offsetCanvasY = Math . abs ( centerY - viewBox [ 1 ] ) * scale + offsetY ;
width = Math . abs ( viewBox [ 2 ] - viewBox [ 0 ] ) * scale ;
height = Math . abs ( viewBox [ 3 ] - viewBox [ 1 ] ) * scale ;
}
this . transform = [ rotateA * scale , rotateB * scale , rotateC * scale , rotateD * scale , offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY , offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY ] ;
this . width = width ;
this . height = height ;
this . fontScale = scale ;
}
PageViewport . prototype = {
clone : function PageViewPort _clone ( args ) {
args = args || { } ;
var scale = 'scale' in args ? args . scale : this . scale ;
var rotation = 'rotation' in args ? args . rotation : this . rotation ;
return new PageViewport ( this . viewBox . slice ( ) , scale , rotation , this . offsetX , this . offsetY , args . dontFlip ) ;
} ,
convertToViewportPoint : function PageViewport _convertToViewportPoint ( x , y ) {
return Util . applyTransform ( [ x , y ] , this . transform ) ;
} ,
convertToViewportRectangle : function PageViewport _convertToViewportRectangle ( rect ) {
var tl = Util . applyTransform ( [ rect [ 0 ] , rect [ 1 ] ] , this . transform ) ;
var br = Util . applyTransform ( [ rect [ 2 ] , rect [ 3 ] ] , this . transform ) ;
return [ tl [ 0 ] , tl [ 1 ] , br [ 0 ] , br [ 1 ] ] ;
} ,
convertToPdfPoint : function PageViewport _convertToPdfPoint ( x , y ) {
return Util . applyInverseTransform ( [ x , y ] , this . transform ) ;
}
} ;
return PageViewport ;
} ( ) ;
var PDFStringTranslateTable = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x2D8 , 0x2C7 , 0x2C6 , 0x2D9 , 0x2DD , 0x2DB , 0x2DA , 0x2DC , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0x2022 , 0x2020 , 0x2021 , 0x2026 , 0x2014 , 0x2013 , 0x192 , 0x2044 , 0x2039 , 0x203A , 0x2212 , 0x2030 , 0x201E , 0x201C , 0x201D , 0x2018 , 0x2019 , 0x201A , 0x2122 , 0xFB01 , 0xFB02 , 0x141 , 0x152 , 0x160 , 0x178 , 0x17D , 0x131 , 0x142 , 0x153 , 0x161 , 0x17E , 0 , 0x20AC ] ;
function stringToPDFString ( str ) {
var i ,
n = str . length ,
strBuf = [ ] ;
if ( str [ 0 ] === '\xFE' && str [ 1 ] === '\xFF' ) {
for ( i = 2 ; i < n ; i += 2 ) {
strBuf . push ( String . fromCharCode ( str . charCodeAt ( i ) << 8 | str . charCodeAt ( i + 1 ) ) ) ;
}
} else {
for ( i = 0 ; i < n ; ++ i ) {
var code = PDFStringTranslateTable [ str . charCodeAt ( i ) ] ;
strBuf . push ( code ? String . fromCharCode ( code ) : str . charAt ( i ) ) ;
}
}
return strBuf . join ( '' ) ;
}
function stringToUTF8String ( str ) {
return decodeURIComponent ( escape ( str ) ) ;
}
function utf8StringToString ( str ) {
return unescape ( encodeURIComponent ( str ) ) ;
}
function isEmptyObj ( obj ) {
for ( var key in obj ) {
return false ;
}
return true ;
}
function isBool ( v ) {
return typeof v === 'boolean' ;
}
function isInt ( v ) {
return typeof v === 'number' && ( v | 0 ) === v ;
}
function isNum ( v ) {
return typeof v === 'number' ;
}
function isString ( v ) {
return typeof v === 'string' ;
}
function isArray ( v ) {
return v instanceof Array ;
}
function isArrayBuffer ( v ) {
return ( typeof v === 'undefined' ? 'undefined' : _typeof ( v ) ) === 'object' && v !== null && v . byteLength !== undefined ;
}
function isSpace ( ch ) {
return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A ;
}
function isNodeJS ( ) {
if ( typeof _ _pdfjsdev _webpack _ _ === 'undefined' ) {
return ( typeof process === 'undefined' ? 'undefined' : _typeof ( process ) ) === 'object' && process + '' === '[object process]' ;
}
return false ;
}
function createPromiseCapability ( ) {
var capability = { } ;
capability . promise = new Promise ( function ( resolve , reject ) {
capability . resolve = resolve ;
capability . reject = reject ;
} ) ;
return capability ;
}
var StatTimer = function StatTimerClosure ( ) {
function rpad ( str , pad , length ) {
while ( str . length < length ) {
str += pad ;
}
return str ;
}
function StatTimer ( ) {
this . started = Object . create ( null ) ;
this . times = [ ] ;
this . enabled = true ;
}
StatTimer . prototype = {
time : function StatTimer _time ( name ) {
if ( ! this . enabled ) {
return ;
}
if ( name in this . started ) {
warn ( 'Timer is already running for ' + name ) ;
}
this . started [ name ] = Date . now ( ) ;
} ,
timeEnd : function StatTimer _timeEnd ( name ) {
if ( ! this . enabled ) {
return ;
}
if ( ! ( name in this . started ) ) {
warn ( 'Timer has not been started for ' + name ) ;
}
this . times . push ( {
'name' : name ,
'start' : this . started [ name ] ,
'end' : Date . now ( )
} ) ;
delete this . started [ name ] ;
} ,
toString : function StatTimer _toString ( ) {
var i , ii ;
var times = this . times ;
var out = '' ;
var longest = 0 ;
for ( i = 0 , ii = times . length ; i < ii ; ++ i ) {
var name = times [ i ] [ 'name' ] ;
if ( name . length > longest ) {
longest = name . length ;
}
}
for ( i = 0 , ii = times . length ; i < ii ; ++ i ) {
var span = times [ i ] ;
var duration = span . end - span . start ;
out += rpad ( span [ 'name' ] , ' ' , longest ) + ' ' + duration + 'ms\n' ;
}
return out ;
}
} ;
return StatTimer ;
} ( ) ;
var createBlob = function createBlob ( data , contentType ) {
if ( typeof Blob !== 'undefined' ) {
return new Blob ( [ data ] , { type : contentType } ) ;
}
throw new Error ( 'The "Blob" constructor is not supported.' ) ;
} ;
var createObjectURL = function createObjectURLClosure ( ) {
var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' ;
return function createObjectURL ( data , contentType ) {
var forceDataSchema = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : false ;
if ( ! forceDataSchema && URL . createObjectURL ) {
var blob = createBlob ( data , contentType ) ;
return URL . createObjectURL ( blob ) ;
}
var buffer = 'data:' + contentType + ';base64,' ;
for ( var i = 0 , ii = data . length ; i < ii ; i += 3 ) {
var b1 = data [ i ] & 0xFF ;
var b2 = data [ i + 1 ] & 0xFF ;
var b3 = data [ i + 2 ] & 0xFF ;
var d1 = b1 >> 2 ,
d2 = ( b1 & 3 ) << 4 | b2 >> 4 ;
var d3 = i + 1 < ii ? ( b2 & 0xF ) << 2 | b3 >> 6 : 64 ;
var d4 = i + 2 < ii ? b3 & 0x3F : 64 ;
buffer += digits [ d1 ] + digits [ d2 ] + digits [ d3 ] + digits [ d4 ] ;
}
return buffer ;
} ;
} ( ) ;
function resolveCall ( fn , args ) {
var thisArg = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : null ;
if ( ! fn ) {
return Promise . resolve ( undefined ) ;
}
return new Promise ( function ( resolve , reject ) {
resolve ( fn . apply ( thisArg , args ) ) ;
} ) ;
}
function resolveOrReject ( capability , success , reason ) {
if ( success ) {
capability . resolve ( ) ;
} else {
capability . reject ( reason ) ;
}
}
function finalize ( promise ) {
return Promise . resolve ( promise ) . catch ( function ( ) { } ) ;
}
function MessageHandler ( sourceName , targetName , comObj ) {
var _this = this ;
this . sourceName = sourceName ;
this . targetName = targetName ;
this . comObj = comObj ;
this . callbackId = 1 ;
this . streamId = 1 ;
this . postMessageTransfers = true ;
this . streamSinks = Object . create ( null ) ;
this . streamControllers = Object . create ( null ) ;
var callbacksCapabilities = this . callbacksCapabilities = Object . create ( null ) ;
var ah = this . actionHandler = Object . create ( null ) ;
this . _onComObjOnMessage = function ( event ) {
var data = event . data ;
if ( data . targetName !== _this . sourceName ) {
return ;
}
if ( data . stream ) {
_this . _processStreamMessage ( data ) ;
} else if ( data . isReply ) {
var callbackId = data . callbackId ;
if ( data . callbackId in callbacksCapabilities ) {
var callback = callbacksCapabilities [ callbackId ] ;
delete callbacksCapabilities [ callbackId ] ;
if ( 'error' in data ) {
callback . reject ( data . error ) ;
} else {
callback . resolve ( data . data ) ;
}
} else {
error ( 'Cannot resolve callback ' + callbackId ) ;
}
} else if ( data . action in ah ) {
var action = ah [ data . action ] ;
if ( data . callbackId ) {
var _sourceName = _this . sourceName ;
var _targetName = data . sourceName ;
Promise . resolve ( ) . then ( function ( ) {
return action [ 0 ] . call ( action [ 1 ] , data . data ) ;
} ) . then ( function ( result ) {
comObj . postMessage ( {
sourceName : _sourceName ,
targetName : _targetName ,
isReply : true ,
callbackId : data . callbackId ,
data : result
} ) ;
} , function ( reason ) {
if ( reason instanceof Error ) {
reason = reason + '' ;
}
comObj . postMessage ( {
sourceName : _sourceName ,
targetName : _targetName ,
isReply : true ,
callbackId : data . callbackId ,
error : reason
} ) ;
} ) ;
} else if ( data . streamId ) {
_this . _createStreamSink ( data ) ;
} else {
action [ 0 ] . call ( action [ 1 ] , data . data ) ;
}
} else {
error ( 'Unknown action from worker: ' + data . action ) ;
}
} ;
comObj . addEventListener ( 'message' , this . _onComObjOnMessage ) ;
}
MessageHandler . prototype = {
on : function on ( actionName , handler , scope ) {
var ah = this . actionHandler ;
if ( ah [ actionName ] ) {
error ( 'There is already an actionName called "' + actionName + '"' ) ;
}
ah [ actionName ] = [ handler , scope ] ;
} ,
send : function send ( actionName , data , transfers ) {
var message = {
sourceName : this . sourceName ,
targetName : this . targetName ,
action : actionName ,
data : data
} ;
this . postMessage ( message , transfers ) ;
} ,
sendWithPromise : function sendWithPromise ( actionName , data , transfers ) {
var callbackId = this . callbackId ++ ;
var message = {
sourceName : this . sourceName ,
targetName : this . targetName ,
action : actionName ,
data : data ,
callbackId : callbackId
} ;
var capability = createPromiseCapability ( ) ;
this . callbacksCapabilities [ callbackId ] = capability ;
try {
this . postMessage ( message , transfers ) ;
} catch ( e ) {
capability . reject ( e ) ;
}
return capability . promise ;
} ,
sendWithStream : function sendWithStream ( actionName , data , queueingStrategy , transfers ) {
var _this2 = this ;
var streamId = this . streamId ++ ;
var sourceName = this . sourceName ;
var targetName = this . targetName ;
return new _streamsLib . ReadableStream ( {
start : function start ( controller ) {
var startCapability = createPromiseCapability ( ) ;
_this2 . streamControllers [ streamId ] = {
controller : controller ,
startCall : startCapability ,
isClosed : false
} ;
_this2 . postMessage ( {
sourceName : sourceName ,
targetName : targetName ,
action : actionName ,
streamId : streamId ,
data : data ,
desiredSize : controller . desiredSize
} ) ;
return startCapability . promise ;
} ,
pull : function pull ( controller ) {
var pullCapability = createPromiseCapability ( ) ;
_this2 . streamControllers [ streamId ] . pullCall = pullCapability ;
_this2 . postMessage ( {
sourceName : sourceName ,
targetName : targetName ,
stream : 'pull' ,
streamId : streamId ,
desiredSize : controller . desiredSize
} ) ;
return pullCapability . promise ;
} ,
cancel : function cancel ( reason ) {
var cancelCapability = createPromiseCapability ( ) ;
_this2 . streamControllers [ streamId ] . cancelCall = cancelCapability ;
_this2 . streamControllers [ streamId ] . isClosed = true ;
_this2 . postMessage ( {
sourceName : sourceName ,
targetName : targetName ,
stream : 'cancel' ,
reason : reason ,
streamId : streamId
} ) ;
return cancelCapability . promise ;
}
} , queueingStrategy ) ;
} ,
_createStreamSink : function _createStreamSink ( data ) {
var _this3 = this ;
var self = this ;
var action = this . actionHandler [ data . action ] ;
var streamId = data . streamId ;
var desiredSize = data . desiredSize ;
var sourceName = this . sourceName ;
var targetName = data . sourceName ;
var capability = createPromiseCapability ( ) ;
var sendStreamRequest = function sendStreamRequest ( _ref ) {
var stream = _ref . stream ,
chunk = _ref . chunk ,
success = _ref . success ,
reason = _ref . reason ;
_this3 . comObj . postMessage ( {
sourceName : sourceName ,
targetName : targetName ,
stream : stream ,
streamId : streamId ,
chunk : chunk ,
success : success ,
reason : reason
} ) ;
} ;
var streamSink = {
enqueue : function enqueue ( chunk ) {
var size = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : 1 ;
var lastDesiredSize = this . desiredSize ;
this . desiredSize -= size ;
if ( lastDesiredSize > 0 && this . desiredSize <= 0 ) {
this . sinkCapability = createPromiseCapability ( ) ;
this . ready = this . sinkCapability . promise ;
}
sendStreamRequest ( {
stream : 'enqueue' ,
chunk : chunk
} ) ;
} ,
close : function close ( ) {
sendStreamRequest ( { stream : 'close' } ) ;
delete self . streamSinks [ streamId ] ;
} ,
error : function error ( reason ) {
sendStreamRequest ( {
stream : 'error' ,
reason : reason
} ) ;
} ,
sinkCapability : capability ,
onPull : null ,
onCancel : null ,
desiredSize : desiredSize ,
ready : null
} ;
streamSink . sinkCapability . resolve ( ) ;
streamSink . ready = streamSink . sinkCapability . promise ;
this . streamSinks [ streamId ] = streamSink ;
resolveCall ( action [ 0 ] , [ data . data , streamSink ] , action [ 1 ] ) . then ( function ( ) {
sendStreamRequest ( {
stream : 'start_complete' ,
success : true
} ) ;
} , function ( reason ) {
sendStreamRequest ( {
stream : 'start_complete' ,
success : false ,
reason : reason
} ) ;
} ) ;
} ,
_processStreamMessage : function _processStreamMessage ( data ) {
var _this4 = this ;
var sourceName = this . sourceName ;
var targetName = data . sourceName ;
var streamId = data . streamId ;
var sendStreamResponse = function sendStreamResponse ( _ref2 ) {
var stream = _ref2 . stream ,
success = _ref2 . success ,
reason = _ref2 . reason ;
_this4 . comObj . postMessage ( {
sourceName : sourceName ,
targetName : targetName ,
stream : stream ,
success : success ,
streamId : streamId ,
reason : reason
} ) ;
} ;
var deleteStreamController = function deleteStreamController ( ) {
Promise . all ( [ _this4 . streamControllers [ data . streamId ] . startCall , _this4 . streamControllers [ data . streamId ] . pullCall , _this4 . streamControllers [ data . streamId ] . cancelCall ] . map ( function ( capability ) {
return capability && finalize ( capability . promise ) ;
} ) ) . then ( function ( ) {
delete _this4 . streamControllers [ data . streamId ] ;
} ) ;
} ;
switch ( data . stream ) {
case 'start_complete' :
resolveOrReject ( this . streamControllers [ data . streamId ] . startCall , data . success , data . reason ) ;
break ;
case 'pull_complete' :
resolveOrReject ( this . streamControllers [ data . streamId ] . pullCall , data . success , data . reason ) ;
break ;
case 'pull' :
if ( ! this . streamSinks [ data . streamId ] ) {
sendStreamResponse ( {
stream : 'pull_complete' ,
success : true
} ) ;
break ;
}
if ( this . streamSinks [ data . streamId ] . desiredSize <= 0 && data . desiredSize > 0 ) {
this . streamSinks [ data . streamId ] . sinkCapability . resolve ( ) ;
}
this . streamSinks [ data . streamId ] . desiredSize = data . desiredSize ;
resolveCall ( this . streamSinks [ data . streamId ] . onPull ) . then ( function ( ) {
sendStreamResponse ( {
stream : 'pull_complete' ,
success : true
} ) ;
} , function ( reason ) {
sendStreamResponse ( {
stream : 'pull_complete' ,
success : false ,
reason : reason
} ) ;
} ) ;
break ;
case 'enqueue' :
if ( ! this . streamControllers [ data . streamId ] . isClosed ) {
this . streamControllers [ data . streamId ] . controller . enqueue ( data . chunk ) ;
}
break ;
case 'close' :
if ( this . streamControllers [ data . streamId ] . isClosed ) {
break ;
}
this . streamControllers [ data . streamId ] . isClosed = true ;
this . streamControllers [ data . streamId ] . controller . close ( ) ;
deleteStreamController ( ) ;
break ;
case 'error' :
this . streamControllers [ data . streamId ] . controller . error ( data . reason ) ;
deleteStreamController ( ) ;
break ;
case 'cancel_complete' :
resolveOrReject ( this . streamControllers [ data . streamId ] . cancelCall , data . success , data . reason ) ;
deleteStreamController ( ) ;
break ;
case 'cancel' :
if ( ! this . streamSinks [ data . streamId ] ) {
break ;
}
resolveCall ( this . streamSinks [ data . streamId ] . onCancel , [ data . reason ] ) . then ( function ( ) {
sendStreamResponse ( {
stream : 'cancel_complete' ,
success : true
} ) ;
} , function ( reason ) {
sendStreamResponse ( {
stream : 'cancel_complete' ,
success : false ,
reason : reason
} ) ;
} ) ;
delete this . streamSinks [ data . streamId ] ;
break ;
default :
throw new Error ( 'Unexpected stream case' ) ;
}
} ,
postMessage : function postMessage ( message , transfers ) {
if ( transfers && this . postMessageTransfers ) {
this . comObj . postMessage ( message , transfers ) ;
} else {
this . comObj . postMessage ( message ) ;
}
} ,
destroy : function destroy ( ) {
this . comObj . removeEventListener ( 'message' , this . _onComObjOnMessage ) ;
}
} ;
function loadJpegStream ( id , imageUrl , objs ) {
var img = new Image ( ) ;
img . onload = function loadJpegStream _onloadClosure ( ) {
objs . resolve ( id , img ) ;
} ;
img . onerror = function loadJpegStream _onerrorClosure ( ) {
objs . resolve ( id , null ) ;
warn ( 'Error during JPEG image loading' ) ;
} ;
img . src = imageUrl ;
}
exports . FONT _IDENTITY _MATRIX = FONT _IDENTITY _MATRIX ;
exports . IDENTITY _MATRIX = IDENTITY _MATRIX ;
exports . OPS = OPS ;
exports . VERBOSITY _LEVELS = VERBOSITY _LEVELS ;
exports . UNSUPPORTED _FEATURES = UNSUPPORTED _FEATURES ;
exports . AnnotationBorderStyleType = AnnotationBorderStyleType ;
exports . AnnotationFieldFlag = AnnotationFieldFlag ;
exports . AnnotationFlag = AnnotationFlag ;
exports . AnnotationType = AnnotationType ;
exports . FontType = FontType ;
exports . ImageKind = ImageKind ;
exports . CMapCompressionType = CMapCompressionType ;
exports . InvalidPDFException = InvalidPDFException ;
exports . MessageHandler = MessageHandler ;
exports . MissingDataException = MissingDataException ;
exports . MissingPDFException = MissingPDFException ;
exports . NativeImageDecoding = NativeImageDecoding ;
exports . NotImplementedException = NotImplementedException ;
exports . PageViewport = PageViewport ;
exports . PasswordException = PasswordException ;
exports . PasswordResponses = PasswordResponses ;
exports . StatTimer = StatTimer ;
exports . StreamType = StreamType ;
exports . TextRenderingMode = TextRenderingMode ;
exports . UnexpectedResponseException = UnexpectedResponseException ;
exports . UnknownErrorException = UnknownErrorException ;
exports . Util = Util ;
exports . XRefParseException = XRefParseException ;
exports . arrayByteLength = arrayByteLength ;
exports . arraysToBytes = arraysToBytes ;
exports . assert = assert ;
exports . bytesToString = bytesToString ;
exports . createBlob = createBlob ;
exports . createPromiseCapability = createPromiseCapability ;
exports . createObjectURL = createObjectURL ;
exports . deprecated = deprecated ;
exports . error = error ;
exports . getLookupTableFactory = getLookupTableFactory ;
exports . getVerbosityLevel = getVerbosityLevel ;
exports . globalScope = globalScope ;
exports . info = info ;
exports . isArray = isArray ;
exports . isArrayBuffer = isArrayBuffer ;
exports . isBool = isBool ;
exports . isEmptyObj = isEmptyObj ;
exports . isInt = isInt ;
exports . isNum = isNum ;
exports . isString = isString ;
exports . isSpace = isSpace ;
exports . isNodeJS = isNodeJS ;
exports . isSameOrigin = isSameOrigin ;
exports . createValidAbsoluteUrl = createValidAbsoluteUrl ;
exports . isLittleEndian = isLittleEndian ;
exports . isEvalSupported = isEvalSupported ;
exports . loadJpegStream = loadJpegStream ;
exports . log2 = log2 ;
exports . readInt8 = readInt8 ;
exports . readUint16 = readUint16 ;
exports . readUint32 = readUint32 ;
exports . removeNullCharacters = removeNullCharacters ;
exports . ReadableStream = _streamsLib . ReadableStream ;
exports . setVerbosityLevel = setVerbosityLevel ;
exports . shadow = shadow ;
exports . string32 = string32 ;
exports . stringToBytes = stringToBytes ;
exports . stringToPDFString = stringToPDFString ;
exports . stringToUTF8String = stringToUTF8String ;
exports . utf8StringToString = utf8StringToString ;
exports . warn = warn ;