{"version":3,"sources":["kendo.pdf.js"],"names":["f","define","defined","value","UNDEFINED","round","precision","power","pow","math","p","limitValue","min","max","rad","degrees","DEG_TO_RAD","deg","radians","isNumber","val","isNaN","valueOrDefault","defaultValue","sqr","objectKey","object","key","parts","push","sort","join","hashKey","str","i","hash","length","charCodeAt","hashObject","arrayLimits","arr","MAX_NUM","MIN_NUM","arrayMin","arrayMax","sparseArrayMin","sparseArrayLimits","sparseArrayMax","n","isFinite","undefined","last","array","append","first","second","apply","renderTemplate","text","kendo","template","useWithBlock","paramName","renderAttr","name","renderAllAttr","attrs","output","renderStyle","renderSize","size","renderPos","pos","result","toHyphens","split","isTransparent","color","arabicToRoman","literals","1","10","100","2","20","200","3","30","300","4","40","400","5","50","500","6","60","600","7","70","700","8","80","800","9","90","900","1000","values","roman","shift","romanToArabic","r","digits","prev","v","toLowerCase","x","l","c","d","m","charAt","memoize","cache","Object","create","id","arguments","this","ucs2decode","string","extra","counter","ucs2encode","map","String","fromCharCode","mergeSort","a","cmp","merge","b","ai","bi","slice","left","right","Math","floor","window","deepExtend","PI","Number","MAX_VALUE","now","Date","getTime","util","drawing","dataviz","amd","a1","a2","a3","parseFloat","makeOutput","out","num","Error","PDFValue","beforeRender","render","isArray","renderArray","isDate","renderDate","toFixed","indexOf","replace","writeString","test","get","write","PDFDictionary","indentLevel","BinaryStream","writeData","data","withIndent","indent","NL","pad","offset","toString","stream","wrapObject","renderValue","renderFull","_offset","call","getPaperOptions","getOption","options","paperSize","margin","def","PAPER_SIZE","a4","unitsToPoints","top","bottom","PDFDocument","defval","catalog","pageTree","self","objcount","objects","attach","pages","FONTS","IMAGES","GRAD_COL_FUNCTIONS","GRAD_OPC_FUNCTIONS","GRAD_COL","GRAD_OPC","PDFCatalog","PDFPageTree","setPages","addPage","content","props","page","paperOptions","contentWidth","contentHeight","PDFStream","Contents","Parent","MediaBox","PDFPage","_content","transform","translate","rect","clip","xrefOffset","zeropad","Size","Root","Info","Producer","PDFString","version","Title","Author","Subject","Keywords","Creator","CreationDate","loadBinary","url","cont","error","console","log","req","XMLHttpRequest","open","HAS_TYPED_ARRAYS","responseType","onload","status","Uint8Array","response","VBArray","responseBody","toArray","onerror","send","loadFont","font","FONT_CACHE","pdf","TTFFont","loadImage","_load","img","src","complete","support","browser","msie","_onload","_onerror","IMAGE_CACHE","reader","canvas","ctx","imgdata","hasAlpha","rgb","alpha","rawbytes","blob","type","FileReader","PDFJpegImage","width","height","URL","revokeObjectURL","bloburl","readAsArrayBuffer","document","createElement","getContext","drawImage","getImageData","ex","writeByte","PDFRawImage","toDataURL","substr","writeBase64","xhr","Image","crossOrigin","createObjectURL","manyLoader","loadOne","urls","callback","len","ch","hasOwnProperty","obj","prototype","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","mm2pt","mm","cm2pt","cm","in2pt","inch","exec","in","defclass","Ctor","proto","Base","_","PDFName_cache","PDFName","asStream","Type","Subtype","Width","Height","BitsPerComponent","ColorSpace","Filter","_resourceName","RESOURCE_COUNTER","mask","SMask","makeHash","cacheColorGradientFunction","r1","g1","b1","r2","g2","b2","func","FunctionType","Domain","Range","N","C0","C1","cacheOpacityGradientFunction","makeGradientFunctions","stops","assemble","funcs","Functions","Bounds","offsets","Encode","encode","cur","prevColor","curColor","opacities","colors","g","pop","cacheColorGradient","isRadial","coords","box","shading","concat","forEach","ShadingType","Coords","Function","Extend","cacheOpacityGradient","opacity","AIS","CA","ca","S","G","FormType","BBox","Group","CS","I","Resources","ExtGState","a0","Shading","s0","cacheGradient","gradient","start","y","end","userSpace","eof","readByte","ensure","readShort","writeShort","w","readShort_","writeShort_","readLong","writeLong","readLong_","writeLong_","readFixed","writeFixed","readFixed_","writeFixed_","read","times","readString","ret","Array","tmp","set","buffer","bytes","skip","nbytes","saveExcursion","base64","atob","BASE64","decode","unquote","parseFontDef","fontdef","fontSize","rx","parseInt","italic","variant","bold","lineHeight","fontFamily","getFontURL","style","mkFamily","FONT_MAPPINGS","fontAlias","alias","defineFont","mmul","c1","d1","e1","f1","c2","d2","e2","f2","isIdentityMatrix","PDFHexString","PDFStandardFont","PDFFont","PDFToUnicodeCmap","keyStr","enc1","enc2","enc3","enc4","chr1","chr2","chr3","input","a5","a6","a7","a8","a9","a10","b0","b3","b4","b5","b6","b7","b8","b9","b10","c0","c3","c4","c5","c6","c7","c8","c9","c10","executive","folio","legal","letter","tabloid","Times-Roman","Times-Bold","Times-Italic","Times-BoldItalic","Helvetica","Helvetica-Bold","Helvetica-Oblique","Helvetica-BoldOblique","Courier","Courier-Bold","Courier-Oblique","Courier-BoldOblique","Symbol","ZapfDingbats","loadFonts","loadImages","getFont","getImage","getOpacityGS","forStroke","gs","_opacityGSCache","dict","txt","esc","escape","empty","compress","pako","deflate","unshift","Length","pagesObj","Pages","Kids","Count","pageObj","BaseFont","encodeText","head","scale","Encoding","_pdf","_font","_sub","makeSubset","psName","bbox","xMin","yMin","xMax","yMax","italicAngle","post","ascent","descent","lineGap","capHeight","os2","xHeight","stemV","familyClass","isSerif","isScript","flags","isFixedPitch","getTextWidth","glyphId","codeMap","cmap","widthOfGlyph","descendant","unimap","unimapStream","sub","fontStream","Length1","descriptor","FontName","FontBBox","Flags","StemV","ItalicAngle","Ascent","Descent","CapHeight","XHeight","FontFile2","ncid2ogid","firstChar","lastChar","charWidths","loop","chunk","gid","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","FirstChar","LastChar","DW","W","CIDToGIDMap","_makeCidToGidMap","DescendantFonts","subset","ToUnicode","cidToGidMap","code","unicode","_rcount","_textMode","_fontResources","_gsResources","_xResources","_patResources","_shResources","_opacity","_matrix","_annotations","_fontSize","_contextStack","ProcSet","Font","XObject","Pattern","Annots","_out","e","dx","dy","sx","sy","rotate","angle","cos","sin","beginText","endText","_requireTextMode","_requireFont","setFont","setTextLeading","setTextRenderingMode","mode","showText","requestedWidth","outputWidth","showTextNL","addLink","uri","ll","_toPage","ur","Rect","Border","A","URI","setStrokeColor","setOpacity","setFillOpacity","setStrokeOpacity","setFillColor","sname","oname","save","restore","setDashPattern","dashArray","dashPhase","setLineWidth","setLineCap","lineCap","setLineJoin","lineJoin","setMitterLimit","mitterLimit","_context","moveTo","lineTo","bezier","x1","y1","x2","y2","x3","y3","bezier1","bezier2","close","h","ellipse","ry","_X","_Y","k","circle","stroke","nop","clipStroke","closeStroke","fill","fillStroke","comment","line","matrix","serif","serif|bold","serif|italic","serif|bold|italic","sans-serif","sans-serif|bold","sans-serif|italic","sans-serif|bold|italic","monospace","monospace|bold","monospace|italic","monospace|bold|italic","zapfdingbats","zapfdingbats|bold","zapfdingbats|italic","zapfdingbats|bold|italic","Document","TEXT_RENDERING_MODE","fillAndStroke","invisible","fillAndClip","strokeAndClip","fillStrokeClip","sortedKeys","keys","Directory","tables","entry","raw","scalerType","tableCount","searchRange","entrySelector","rangeShift","tag","checksum","deftable","methods","file","definition","rawData","parse","nextSubsetTag","subsetTag","Subfont","unicodes","ogid2ngid","0","ngid2ogid","next","nextGid","numFonts","contents","HeadTable","LocaTable","HheaTable","MaxpTable","HmtxTable","GlyfTable","NameTable","PostTable","CmapTable","OS2Table","PDF","readTable","table","directoryLength","headOffset","tableData","sum","adjustment","maxpow2","LN2","revision","checkSumAdjustment","magicNumber","unitsPerEm","created","modified","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","format","offsetOf","lengthOf","needsLongFormat","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numOfLongHorMetrics","ids","numGlyphs","maxPoints","maxContours","maxComponentPoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","glyphIds","dir","hhea","lsbCount","metrics","advance","lsb","maxp","leftSideBearings","forGlyph","SimpleGlyph","CompoundGlyph","idOffsets","MORE_COMPONENTS","ARG_1_AND_2_ARE_WORDS","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_SCALE","compound","old2new","glyphFor","loca","numberOfContours","glyph","glyphs","oldIds","NameEntry","platformID","platformSpecificID","languageID","nameID","count","stringOffset","nameRecords","strings","rec","postscriptEntry","postscriptName","strTable","list","j","strCount","POSTSCRIPT_GLYPHS","numberOfGlyphs","limit","underlinePosition","underlineThickness","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","names","index","mapping","indexes","CmapEntry","segCount","endCode","startCode","idDelta","idRangeOffset","ngroups","endCharCode","glyphCode","language","renderCharmap","new_gid","charcode","delta","segCountX2","deltas","rangeOffsets","startGlyph","codes","startCodes","endCodes","diff","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","panose","charRange","vendorID","selection","firstCharIndex","lastCharIndex","winAscent","winDescent","codePageRange","defaultChar","breakChar","maxContext","use","old_gid","reduce","glyphsFor","glyf","new_gid_ids","old_gid_ids","hmtx","OS/2","directory","cid","$","zeroSize","baseline","measureText","measureBox","TextMetrics","current","measure","fonts","promises","load","logToConsole","Promise","all","then","doc","Class","LRUCache","extend","init","_size","_length","_map","put","lru","_head","_tail","newer","older","defaultMeasureBox","_cache","_initOptions","baselineMarkerSize","styleKey","cacheKey","cachedResult","baselineMarker","_baselineMarker","cloneNode","appendChild","body","offsetWidth","offsetHeight","offsetTop","parentNode","removeChild","jQuery","encodeBase64","encodeUTF8","KEY_STR","inArray","ObserversMixin","observers","_observers","addObserver","element","removeObserver","splice","trigger","methodName","event","observer","idx","_suspended","optionsChange","geometryChange","suspend","resume","_observerField","field","mixins","group","doIt","drawPage","addMargin","origin","optimize","root","getSize","getOrigin","geo","Matrix","landscape","drawElement","producer","title","author","subject","keywords","creator","multiPage","children","images","traverse","dispatch","Text","toBlob","Blob","saveAs","filename","proxy","safari","dataURI","fileName","dataURL","proxyURL","handlers","handler","nodeType","_pdfDebug","setStrokeOptions","setFillOptions","setClipping","Path","drawPath","MultiPath","drawMultiPath","Circle","drawCircle","Arc","drawArc","drawText","drawGroup","drawRect","dashType","parseColor","DASH_PATTERNS","LINE_CAP","LINE_JOIN","Gradient","_drawPath","shouldDraw","thing","maybeGradient","tl","RadialGradient","center","radius","elements","stop","rawBBox","topLeft","maybeFillStroke","maybeDrawRect","path","isRect","segments","closed","controlIn","anchor","seg","prevOut","controlOut","paths","geometry","points","curvePoints","_position","_pdfRect","_pdfLink","sz","exportPDF","defer","Deferred","_ignoreMargin","resolve","promise","toRGB","change","newShape","changed","visible","shape","optArray","el","opt","withClipping","saveclipbox","clipbox","savematrix","multiplyCopy","intersect","inClipbox","currentBox","union","unit","dash","dashDot","dot","longDash","longDashDot","longDashDotDot","solid","butt","square","miter","bevel","toStream","PDFMixin","events","saveAsPDF","_drawPDF","_drawPDFShadow","allPages","progress","args","done","forceProxy","proxyTarget","fail","err","reject","drawDOM","wrapper","pageNumber","totalPages","notify","settings","drawOptions","shadow","css","overflow","before","clone","setTimeout","always","remove"],"mappings":"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","file":"kendo.pdf.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('util/main', ['kendo.core'], f);\n}(function () {\n (function () {\n var math = Math, kendo = window.kendo, deepExtend = kendo.deepExtend;\n var DEG_TO_RAD = math.PI / 180, MAX_NUM = Number.MAX_VALUE, MIN_NUM = -Number.MAX_VALUE, UNDEFINED = 'undefined';\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n function round(value, precision) {\n var power = pow(precision);\n return math.round(value * power) / power;\n }\n function pow(p) {\n if (p) {\n return math.pow(10, p);\n } else {\n return 1;\n }\n }\n function limitValue(value, min, max) {\n return math.max(math.min(value, max), min);\n }\n function rad(degrees) {\n return degrees * DEG_TO_RAD;\n }\n function deg(radians) {\n return radians / DEG_TO_RAD;\n }\n function isNumber(val) {\n return typeof val === 'number' && !isNaN(val);\n }\n function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n }\n function sqr(value) {\n return value * value;\n }\n function objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n return parts.sort().join('');\n }\n function hashKey(str) {\n var hash = 2166136261;\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n return hash >>> 0;\n }\n function hashObject(object) {\n return hashKey(objectKey(object));\n }\n var now = Date.now;\n if (!now) {\n now = function () {\n return new Date().getTime();\n };\n }\n function arrayLimits(arr) {\n var length = arr.length, i, min = MAX_NUM, max = MIN_NUM;\n for (i = 0; i < length; i++) {\n max = math.max(max, arr[i]);\n min = math.min(min, arr[i]);\n }\n return {\n min: min,\n max: max\n };\n }\n function arrayMin(arr) {\n return arrayLimits(arr).min;\n }\n function arrayMax(arr) {\n return arrayLimits(arr).max;\n }\n function sparseArrayMin(arr) {\n return sparseArrayLimits(arr).min;\n }\n function sparseArrayMax(arr) {\n return sparseArrayLimits(arr).max;\n }\n function sparseArrayLimits(arr) {\n var min = MAX_NUM, max = MIN_NUM;\n for (var i = 0, length = arr.length; i < length; i++) {\n var n = arr[i];\n if (n !== null && isFinite(n)) {\n min = math.min(min, n);\n max = math.max(max, n);\n }\n }\n return {\n min: min === MAX_NUM ? undefined : min,\n max: max === MIN_NUM ? undefined : max\n };\n }\n function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n }\n function append(first, second) {\n first.push.apply(first, second);\n return first;\n }\n function renderTemplate(text) {\n return kendo.template(text, {\n useWithBlock: false,\n paramName: 'd'\n });\n }\n function renderAttr(name, value) {\n return defined(value) && value !== null ? ' ' + name + '=\\'' + value + '\\' ' : '';\n }\n function renderAllAttr(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n return output;\n }\n function renderStyle(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + ':' + value + ';';\n }\n }\n if (output !== '') {\n return output;\n }\n }\n function renderSize(size) {\n if (typeof size !== 'string') {\n size += 'px';\n }\n return size;\n }\n function renderPos(pos) {\n var result = [];\n if (pos) {\n var parts = kendo.toHyphens(pos).split('-');\n for (var i = 0; i < parts.length; i++) {\n result.push('k-pos-' + parts[i]);\n }\n }\n return result.join(' ');\n }\n function isTransparent(color) {\n return color === '' || color === null || color === 'none' || color === 'transparent' || !defined(color);\n }\n function arabicToRoman(n) {\n var literals = {\n 1: 'i',\n 10: 'x',\n 100: 'c',\n 2: 'ii',\n 20: 'xx',\n 200: 'cc',\n 3: 'iii',\n 30: 'xxx',\n 300: 'ccc',\n 4: 'iv',\n 40: 'xl',\n 400: 'cd',\n 5: 'v',\n 50: 'l',\n 500: 'd',\n 6: 'vi',\n 60: 'lx',\n 600: 'dc',\n 7: 'vii',\n 70: 'lxx',\n 700: 'dcc',\n 8: 'viii',\n 80: 'lxxx',\n 800: 'dccc',\n 9: 'ix',\n 90: 'xc',\n 900: 'cm',\n 1000: 'm'\n };\n var values = [\n 1000,\n 900,\n 800,\n 700,\n 600,\n 500,\n 400,\n 300,\n 200,\n 100,\n 90,\n 80,\n 70,\n 60,\n 50,\n 40,\n 30,\n 20,\n 10,\n 9,\n 8,\n 7,\n 6,\n 5,\n 4,\n 3,\n 2,\n 1\n ];\n var roman = '';\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n }\n function romanToArabic(r) {\n r = r.toLowerCase();\n var digits = {\n i: 1,\n v: 5,\n x: 10,\n l: 50,\n c: 100,\n d: 500,\n m: 1000\n };\n var value = 0, prev = 0;\n for (var i = 0; i < r.length; ++i) {\n var v = digits[r.charAt(i)];\n if (!v) {\n return null;\n }\n value += v;\n if (v > prev) {\n value -= 2 * prev;\n }\n prev = v;\n }\n return value;\n }\n function memoize(f) {\n var cache = Object.create(null);\n return function () {\n var id = '';\n for (var i = arguments.length; --i >= 0;) {\n id += ':' + arguments[i];\n }\n return id in cache ? cache[id] : cache[id] = f.apply(this, arguments);\n };\n }\n function ucs2decode(string) {\n var output = [], counter = 0, length = string.length, value, extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 55296 && value <= 56319 && counter < length) {\n extra = string.charCodeAt(counter++);\n if ((extra & 64512) == 56320) {\n output.push(((value & 1023) << 10) + (extra & 1023) + 65536);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n }\n function ucs2encode(array) {\n return array.map(function (value) {\n var output = '';\n if (value > 65535) {\n value -= 65536;\n output += String.fromCharCode(value >>> 10 & 1023 | 55296);\n value = 56320 | value & 1023;\n }\n output += String.fromCharCode(value);\n return output;\n }).join('');\n }\n function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n }(a);\n }\n deepExtend(kendo, {\n util: {\n MAX_NUM: MAX_NUM,\n MIN_NUM: MIN_NUM,\n append: append,\n arrayLimits: arrayLimits,\n arrayMin: arrayMin,\n arrayMax: arrayMax,\n defined: defined,\n deg: deg,\n hashKey: hashKey,\n hashObject: hashObject,\n isNumber: isNumber,\n isTransparent: isTransparent,\n last: last,\n limitValue: limitValue,\n now: now,\n objectKey: objectKey,\n round: round,\n rad: rad,\n renderAttr: renderAttr,\n renderAllAttr: renderAllAttr,\n renderPos: renderPos,\n renderSize: renderSize,\n renderStyle: renderStyle,\n renderTemplate: renderTemplate,\n sparseArrayLimits: sparseArrayLimits,\n sparseArrayMin: sparseArrayMin,\n sparseArrayMax: sparseArrayMax,\n sqr: sqr,\n valueOrDefault: valueOrDefault,\n romanToArabic: romanToArabic,\n arabicToRoman: arabicToRoman,\n memoize: memoize,\n ucs2encode: ucs2encode,\n ucs2decode: ucs2decode,\n mergeSort: mergeSort\n }\n });\n kendo.drawing.util = kendo.util;\n kendo.dataviz.util = kendo.util;\n }());\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('pdf/core', [\n 'kendo.core',\n 'util/main'\n ], f);\n}(function () {\n (function (window, parseFloat, undefined) {\n 'use strict';\n var kendo = window.kendo;\n var HAS_TYPED_ARRAYS = !!window.Uint8Array;\n var NL = '\\n';\n var RESOURCE_COUNTER = 0;\n var BASE64 = function () {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n return {\n decode: function (str) {\n var input = str.replace(/[^A-Za-z0-9\\+\\/\\=]/g, ''), i = 0, n = input.length, output = [];\n while (i < n) {\n var enc1 = keyStr.indexOf(input.charAt(i++));\n var enc2 = keyStr.indexOf(input.charAt(i++));\n var enc3 = keyStr.indexOf(input.charAt(i++));\n var enc4 = keyStr.indexOf(input.charAt(i++));\n var chr1 = enc1 << 2 | enc2 >>> 4;\n var chr2 = (enc2 & 15) << 4 | enc3 >>> 2;\n var chr3 = (enc3 & 3) << 6 | enc4;\n output.push(chr1);\n if (enc3 != 64) {\n output.push(chr2);\n }\n if (enc4 != 64) {\n output.push(chr3);\n }\n }\n return output;\n },\n encode: function (bytes) {\n var i = 0, n = bytes.length;\n var output = '';\n while (i < n) {\n var chr1 = bytes[i++];\n var chr2 = bytes[i++];\n var chr3 = bytes[i++];\n var enc1 = chr1 >>> 2;\n var enc2 = (chr1 & 3) << 4 | chr2 >>> 4;\n var enc3 = (chr2 & 15) << 2 | chr3 >>> 6;\n var enc4 = chr3 & 63;\n if (i - n == 2) {\n enc3 = enc4 = 64;\n } else if (i - n == 1) {\n enc4 = 64;\n }\n output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\n }\n return output;\n }\n };\n }();\n var PAPER_SIZE = {\n a0: [\n 2383.94,\n 3370.39\n ],\n a1: [\n 1683.78,\n 2383.94\n ],\n a2: [\n 1190.55,\n 1683.78\n ],\n a3: [\n 841.89,\n 1190.55\n ],\n a4: [\n 595.28,\n 841.89\n ],\n a5: [\n 419.53,\n 595.28\n ],\n a6: [\n 297.64,\n 419.53\n ],\n a7: [\n 209.76,\n 297.64\n ],\n a8: [\n 147.4,\n 209.76\n ],\n a9: [\n 104.88,\n 147.4\n ],\n a10: [\n 73.7,\n 104.88\n ],\n b0: [\n 2834.65,\n 4008.19\n ],\n b1: [\n 2004.09,\n 2834.65\n ],\n b2: [\n 1417.32,\n 2004.09\n ],\n b3: [\n 1000.63,\n 1417.32\n ],\n b4: [\n 708.66,\n 1000.63\n ],\n b5: [\n 498.9,\n 708.66\n ],\n b6: [\n 354.33,\n 498.9\n ],\n b7: [\n 249.45,\n 354.33\n ],\n b8: [\n 175.75,\n 249.45\n ],\n b9: [\n 124.72,\n 175.75\n ],\n b10: [\n 87.87,\n 124.72\n ],\n c0: [\n 2599.37,\n 3676.54\n ],\n c1: [\n 1836.85,\n 2599.37\n ],\n c2: [\n 1298.27,\n 1836.85\n ],\n c3: [\n 918.43,\n 1298.27\n ],\n c4: [\n 649.13,\n 918.43\n ],\n c5: [\n 459.21,\n 649.13\n ],\n c6: [\n 323.15,\n 459.21\n ],\n c7: [\n 229.61,\n 323.15\n ],\n c8: [\n 161.57,\n 229.61\n ],\n c9: [\n 113.39,\n 161.57\n ],\n c10: [\n 79.37,\n 113.39\n ],\n executive: [\n 521.86,\n 756\n ],\n folio: [\n 612,\n 936\n ],\n legal: [\n 612,\n 1008\n ],\n letter: [\n 612,\n 792\n ],\n tabloid: [\n 792,\n 1224\n ]\n };\n function makeOutput() {\n var indentLevel = 0, output = BinaryStream();\n function out() {\n for (var i = 0; i < arguments.length; ++i) {\n var x = arguments[i];\n if (x === undefined) {\n throw new Error('Cannot output undefined to PDF');\n } else if (x instanceof PDFValue) {\n x.beforeRender(out);\n x.render(out);\n } else if (isArray(x)) {\n renderArray(x, out);\n } else if (isDate(x)) {\n renderDate(x, out);\n } else if (typeof x == 'number') {\n if (isNaN(x)) {\n throw new Error('Cannot output NaN to PDF');\n }\n var num = x.toFixed(7);\n if (num.indexOf('.') >= 0) {\n num = num.replace(/\\.?0+$/, '');\n }\n if (num == '-0') {\n num = '0';\n }\n output.writeString(num);\n } else if (/string|boolean/.test(typeof x)) {\n output.writeString(x + '');\n } else if (typeof x.get == 'function') {\n output.write(x.get());\n } else if (typeof x == 'object') {\n if (!x) {\n output.writeString('null');\n } else {\n out(new PDFDictionary(x));\n }\n }\n }\n }\n out.writeData = function (data) {\n output.write(data);\n };\n out.withIndent = function (f) {\n ++indentLevel;\n f(out);\n --indentLevel;\n };\n out.indent = function () {\n out(NL, pad('', indentLevel * 2, ' '));\n out.apply(null, arguments);\n };\n out.offset = function () {\n return output.offset();\n };\n out.toString = function () {\n throw new Error('FIX CALLER');\n };\n out.get = function () {\n return output.get();\n };\n out.stream = function () {\n return output;\n };\n return out;\n }\n function wrapObject(value, id) {\n var beforeRender = value.beforeRender;\n var renderValue = value.render;\n value.beforeRender = function () {\n };\n value.render = function (out) {\n out(id, ' 0 R');\n };\n value.renderFull = function (out) {\n value._offset = out.offset();\n out(id, ' 0 obj ');\n beforeRender.call(value, out);\n renderValue.call(value, out);\n out(' endobj');\n };\n }\n function getPaperOptions(getOption) {\n if (typeof getOption != 'function') {\n var options = getOption;\n getOption = function (key, def) {\n return key in options ? options[key] : def;\n };\n }\n var paperSize = getOption('paperSize', PAPER_SIZE.a4);\n if (!paperSize) {\n return {};\n }\n if (typeof paperSize == 'string') {\n paperSize = PAPER_SIZE[paperSize.toLowerCase()];\n if (paperSize == null) {\n throw new Error('Unknown paper size');\n }\n }\n paperSize[0] = unitsToPoints(paperSize[0]);\n paperSize[1] = unitsToPoints(paperSize[1]);\n if (getOption('landscape', false)) {\n paperSize = [\n Math.max(paperSize[0], paperSize[1]),\n Math.min(paperSize[0], paperSize[1])\n ];\n }\n var margin = getOption('margin');\n if (margin) {\n if (typeof margin == 'string' || typeof margin == 'number') {\n margin = unitsToPoints(margin, 0);\n margin = {\n left: margin,\n top: margin,\n right: margin,\n bottom: margin\n };\n } else {\n margin = {\n left: unitsToPoints(margin.left, 0),\n top: unitsToPoints(margin.top, 0),\n right: unitsToPoints(margin.right, 0),\n bottom: unitsToPoints(margin.bottom, 0)\n };\n }\n if (getOption('addMargin')) {\n paperSize[0] += margin.left + margin.right;\n paperSize[1] += margin.top + margin.bottom;\n }\n }\n return {\n paperSize: paperSize,\n margin: margin\n };\n }\n function PDFDocument(options) {\n var self = this;\n var out = makeOutput();\n var objcount = 0;\n var objects = [];\n function getOption(name, defval) {\n return options && options[name] != null ? options[name] : defval;\n }\n self.getOption = getOption;\n self.attach = function (value) {\n if (objects.indexOf(value) < 0) {\n wrapObject(value, ++objcount);\n objects.push(value);\n }\n return value;\n };\n self.pages = [];\n self.FONTS = {};\n self.IMAGES = {};\n self.GRAD_COL_FUNCTIONS = {};\n self.GRAD_OPC_FUNCTIONS = {};\n self.GRAD_COL = {};\n self.GRAD_OPC = {};\n var catalog = self.attach(new PDFCatalog());\n var pageTree = self.attach(new PDFPageTree());\n catalog.setPages(pageTree);\n self.addPage = function (options) {\n var paperOptions = getPaperOptions(function (name, defval) {\n return options && options[name] != null ? options[name] : defval;\n });\n var paperSize = paperOptions.paperSize;\n var margin = paperOptions.margin;\n var contentWidth = paperSize[0];\n var contentHeight = paperSize[1];\n if (margin) {\n contentWidth -= margin.left + margin.right;\n contentHeight -= margin.top + margin.bottom;\n }\n var content = new PDFStream(makeOutput(), null, true);\n var props = {\n Contents: self.attach(content),\n Parent: pageTree,\n MediaBox: [\n 0,\n 0,\n paperSize[0],\n paperSize[1]\n ]\n };\n var page = new PDFPage(self, props);\n page._content = content;\n pageTree.addPage(self.attach(page));\n page.transform(1, 0, 0, -1, 0, paperSize[1]);\n if (margin) {\n page.translate(margin.left, margin.top);\n page.rect(0, 0, contentWidth, contentHeight);\n page.clip();\n }\n self.pages.push(page);\n return page;\n };\n self.render = function () {\n var i;\n out('%PDF-1.4', NL, '%ÂÁÚÏÎ', NL, NL);\n for (i = 0; i < objects.length; ++i) {\n objects[i].renderFull(out);\n out(NL, NL);\n }\n var xrefOffset = out.offset();\n out('xref', NL, 0, ' ', objects.length + 1, NL);\n out('0000000000 65535 f ', NL);\n for (i = 0; i < objects.length; ++i) {\n out(zeropad(objects[i]._offset, 10), ' 00000 n ', NL);\n }\n out(NL);\n out('trailer', NL);\n out(new PDFDictionary({\n Size: objects.length + 1,\n Root: catalog,\n Info: new PDFDictionary({\n Producer: new PDFString(getOption('producer', 'Kendo UI PDF Generator v.' + kendo.version)),\n Title: new PDFString(getOption('title', '')),\n Author: new PDFString(getOption('author', '')),\n Subject: new PDFString(getOption('subject', '')),\n Keywords: new PDFString(getOption('keywords', '')),\n Creator: new PDFString(getOption('creator', 'Kendo UI PDF Generator v.' + kendo.version)),\n CreationDate: getOption('date', new Date())\n })\n }), NL, NL);\n out('startxref', NL, xrefOffset, NL);\n out('%%EOF', NL);\n return out.stream().offset(0);\n };\n }\n var FONT_CACHE = {\n 'Times-Roman': true,\n 'Times-Bold': true,\n 'Times-Italic': true,\n 'Times-BoldItalic': true,\n 'Helvetica': true,\n 'Helvetica-Bold': true,\n 'Helvetica-Oblique': true,\n 'Helvetica-BoldOblique': true,\n 'Courier': true,\n 'Courier-Bold': true,\n 'Courier-Oblique': true,\n 'Courier-BoldOblique': true,\n 'Symbol': true,\n 'ZapfDingbats': true\n };\n function loadBinary(url, cont) {\n function error() {\n if (window.console) {\n if (window.console.error) {\n window.console.error('Cannot load URL: %s', url);\n } else {\n window.console.log('Cannot load URL: %s', url);\n }\n }\n cont(null);\n }\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n if (HAS_TYPED_ARRAYS) {\n req.responseType = 'arraybuffer';\n }\n req.onload = function () {\n if (req.status == 200 || req.status == 304) {\n if (HAS_TYPED_ARRAYS) {\n cont(new Uint8Array(req.response));\n } else {\n cont(new VBArray(req.responseBody).toArray());\n }\n } else {\n error();\n }\n };\n req.onerror = error;\n req.send(null);\n }\n function loadFont(url, cont) {\n var font = FONT_CACHE[url];\n if (font) {\n cont(font);\n } else {\n loadBinary(url, function (data) {\n if (data == null) {\n throw new Error('Cannot load font from ' + url);\n } else {\n var font = new kendo.pdf.TTFFont(data);\n FONT_CACHE[url] = font;\n cont(font);\n }\n });\n }\n }\n var IMAGE_CACHE = {};\n function loadImage(url, cont) {\n var img = IMAGE_CACHE[url], bloburl, blob;\n if (img) {\n cont(img);\n } else {\n img = new Image();\n if (!/^data:/i.test(url)) {\n img.crossOrigin = 'Anonymous';\n }\n if (HAS_TYPED_ARRAYS && !/^data:/i.test(url)) {\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n blob = xhr.response;\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n };\n xhr.onerror = _onerror;\n xhr.open('GET', url, true);\n xhr.responseType = 'blob';\n xhr.send();\n } else {\n _load(url);\n }\n }\n function _load(url) {\n img.src = url;\n if (img.complete && !kendo.support.browser.msie) {\n _onload();\n } else {\n img.onload = _onload;\n img.onerror = _onerror;\n }\n }\n function _onerror() {\n cont(IMAGE_CACHE[url] = 'TAINTED');\n }\n function _onload() {\n if (blob && /^image\\/jpe?g$/i.test(blob.type)) {\n var reader = new FileReader();\n reader.onload = function () {\n img = new PDFJpegImage(img.width, img.height, BinaryStream(new Uint8Array(this.result)));\n URL.revokeObjectURL(bloburl);\n cont(IMAGE_CACHE[url] = img);\n };\n reader.readAsArrayBuffer(blob);\n return;\n }\n var canvas = document.createElement('canvas');\n canvas.width = img.width;\n canvas.height = img.height;\n var ctx = canvas.getContext('2d');\n ctx.drawImage(img, 0, 0);\n var imgdata;\n try {\n imgdata = ctx.getImageData(0, 0, img.width, img.height);\n } catch (ex) {\n return _onerror();\n } finally {\n if (bloburl) {\n URL.revokeObjectURL(bloburl);\n }\n }\n var hasAlpha = false, rgb = BinaryStream(), alpha = BinaryStream();\n var rawbytes = imgdata.data;\n var i = 0;\n while (i < rawbytes.length) {\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n var a = rawbytes[i++];\n if (a < 255) {\n hasAlpha = true;\n }\n alpha.writeByte(a);\n }\n if (hasAlpha) {\n img = new PDFRawImage(img.width, img.height, rgb, alpha);\n } else {\n var data = canvas.toDataURL('image/jpeg');\n data = data.substr(data.indexOf(';base64,') + 8);\n var stream = BinaryStream();\n stream.writeBase64(data);\n stream.offset(0);\n img = new PDFJpegImage(img.width, img.height, stream);\n }\n cont(IMAGE_CACHE[url] = img);\n }\n }\n function manyLoader(loadOne) {\n return function (urls, callback) {\n var n = urls.length, i = n;\n if (n === 0) {\n return callback();\n }\n while (i-- > 0) {\n loadOne(urls[i], function () {\n if (--n === 0) {\n callback();\n }\n });\n }\n };\n }\n var loadFonts = manyLoader(loadFont);\n var loadImages = manyLoader(loadImage);\n PDFDocument.prototype = {\n loadFonts: loadFonts,\n loadImages: loadImages,\n getFont: function (url) {\n var font = this.FONTS[url];\n if (!font) {\n font = FONT_CACHE[url];\n if (!font) {\n throw new Error('Font ' + url + ' has not been loaded');\n }\n if (font === true) {\n font = this.attach(new PDFStandardFont(url));\n } else {\n font = this.attach(new PDFFont(this, font));\n }\n this.FONTS[url] = font;\n }\n return font;\n },\n getImage: function (url) {\n var img = this.IMAGES[url];\n if (!img) {\n img = IMAGE_CACHE[url];\n if (!img) {\n throw new Error('Image ' + url + ' has not been loaded');\n }\n if (img === 'TAINTED') {\n return null;\n }\n img = this.IMAGES[url] = this.attach(img.asStream(this));\n }\n return img;\n },\n getOpacityGS: function (opacity, forStroke) {\n var id = parseFloat(opacity).toFixed(3);\n opacity = parseFloat(id);\n id += forStroke ? 'S' : 'F';\n var cache = this._opacityGSCache || (this._opacityGSCache = {});\n var gs = cache[id];\n if (!gs) {\n var props = { Type: _('ExtGState') };\n if (forStroke) {\n props.CA = opacity;\n } else {\n props.ca = opacity;\n }\n gs = this.attach(new PDFDictionary(props));\n gs._resourceName = _('GS' + ++RESOURCE_COUNTER);\n cache[id] = gs;\n }\n return gs;\n },\n dict: function (props) {\n return new PDFDictionary(props);\n },\n name: function (str) {\n return _(str);\n },\n stream: function (props, content) {\n return new PDFStream(content, props);\n }\n };\n function pad(str, len, ch) {\n while (str.length < len) {\n str = ch + str;\n }\n return str;\n }\n function zeropad(n, len) {\n return pad(n + '', len, '0');\n }\n function hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n var isArray = Array.isArray || function (obj) {\n return obj instanceof Array;\n };\n function isDate(obj) {\n return obj instanceof Date;\n }\n function renderArray(a, out) {\n out('[');\n if (a.length > 0) {\n out.withIndent(function () {\n for (var i = 0; i < a.length; ++i) {\n if (i > 0 && i % 8 === 0) {\n out.indent(a[i]);\n } else {\n out(' ', a[i]);\n }\n }\n });\n }\n out(' ]');\n }\n function renderDate(date, out) {\n out('(D:', zeropad(date.getUTCFullYear(), 4), zeropad(date.getUTCMonth() + 1, 2), zeropad(date.getUTCDate(), 2), zeropad(date.getUTCHours(), 2), zeropad(date.getUTCMinutes(), 2), zeropad(date.getUTCSeconds(), 2), 'Z)');\n }\n function mm2pt(mm) {\n return mm * (72 / 25.4);\n }\n function cm2pt(cm) {\n return mm2pt(cm * 10);\n }\n function in2pt(inch) {\n return inch * 72;\n }\n function unitsToPoints(x, def) {\n if (typeof x == 'number') {\n return x;\n }\n if (typeof x == 'string') {\n var m;\n m = /^\\s*([0-9.]+)\\s*(mm|cm|in|pt)\\s*$/.exec(x);\n if (m) {\n var num = parseFloat(m[1]);\n if (!isNaN(num)) {\n if (m[2] == 'pt') {\n return num;\n }\n return {\n 'mm': mm2pt,\n 'cm': cm2pt,\n 'in': in2pt\n }[m[2]](num);\n }\n }\n }\n if (def != null) {\n return def;\n }\n throw new Error('Can\\'t parse unit: ' + x);\n }\n function PDFValue() {\n }\n PDFValue.prototype.beforeRender = function () {\n };\n function defclass(Ctor, proto, Base) {\n if (!Base) {\n Base = PDFValue;\n }\n Ctor.prototype = new Base();\n for (var i in proto) {\n if (hasOwnProperty(proto, i)) {\n Ctor.prototype[i] = proto[i];\n }\n }\n return Ctor;\n }\n var PDFString = defclass(function PDFString(value) {\n this.value = value;\n }, {\n render: function (out) {\n var txt = '', esc = this.escape();\n for (var i = 0; i < esc.length; ++i) {\n txt += String.fromCharCode(esc.charCodeAt(i) & 255);\n }\n out('(', txt, ')');\n },\n escape: function () {\n return this.value.replace(/([\\(\\)\\\\])/g, '\\\\$1');\n },\n toString: function () {\n return this.value;\n }\n });\n var PDFHexString = defclass(function PDFHexString(value) {\n this.value = value;\n }, {\n render: function (out) {\n out('<');\n for (var i = 0; i < this.value.length; ++i) {\n out(zeropad(this.value.charCodeAt(i).toString(16), 4));\n }\n out('>');\n }\n }, PDFString);\n var PDFName = defclass(function PDFName(name) {\n this.name = name;\n }, {\n render: function (out) {\n out('/' + this.escape());\n },\n escape: function () {\n return this.name.replace(/[^\\x21-\\x7E]/g, function (c) {\n return '#' + zeropad(c.charCodeAt(0).toString(16), 2);\n });\n },\n toString: function () {\n return this.name;\n }\n });\n var PDFName_cache = {};\n PDFName.get = _;\n function _(name) {\n if (hasOwnProperty(PDFName_cache, name)) {\n return PDFName_cache[name];\n }\n return PDFName_cache[name] = new PDFName(name);\n }\n var PDFDictionary = defclass(function PDFDictionary(props) {\n this.props = props;\n }, {\n render: function (out) {\n var props = this.props, empty = true;\n out('<<');\n out.withIndent(function () {\n for (var i in props) {\n if (hasOwnProperty(props, i) && !/^_/.test(i)) {\n empty = false;\n out.indent(_(i), ' ', props[i]);\n }\n }\n });\n if (!empty) {\n out.indent();\n }\n out('>>');\n }\n });\n var PDFStream = defclass(function PDFStream(data, props, compress) {\n if (typeof data == 'string') {\n var tmp = BinaryStream();\n tmp.write(data);\n data = tmp;\n }\n this.data = data;\n this.props = props || {};\n this.compress = compress;\n }, {\n render: function (out) {\n var data = this.data.get(), props = this.props;\n if (this.compress && window.pako && typeof window.pako.deflate == 'function') {\n if (!props.Filter) {\n props.Filter = [];\n } else if (!(props.Filter instanceof Array)) {\n props.Filter = [props.Filter];\n }\n props.Filter.unshift(_('FlateDecode'));\n data = window.pako.deflate(data);\n }\n props.Length = data.length;\n out(new PDFDictionary(props), ' stream', NL);\n out.writeData(data);\n out(NL, 'endstream');\n }\n });\n var PDFCatalog = defclass(function PDFCatalog(props) {\n props = this.props = props || {};\n props.Type = _('Catalog');\n }, {\n setPages: function (pagesObj) {\n this.props.Pages = pagesObj;\n }\n }, PDFDictionary);\n var PDFPageTree = defclass(function PDFPageTree() {\n this.props = {\n Type: _('Pages'),\n Kids: [],\n Count: 0\n };\n }, {\n addPage: function (pageObj) {\n this.props.Kids.push(pageObj);\n this.props.Count++;\n }\n }, PDFDictionary);\n function PDFJpegImage(width, height, data) {\n this.asStream = function () {\n var stream = new PDFStream(data, {\n Type: _('XObject'),\n Subtype: _('Image'),\n Width: width,\n Height: height,\n BitsPerComponent: 8,\n ColorSpace: _('DeviceRGB'),\n Filter: _('DCTDecode')\n });\n stream._resourceName = _('I' + ++RESOURCE_COUNTER);\n return stream;\n };\n }\n function PDFRawImage(width, height, rgb, alpha) {\n this.asStream = function (pdf) {\n var mask = new PDFStream(alpha, {\n Type: _('XObject'),\n Subtype: _('Image'),\n Width: width,\n Height: height,\n BitsPerComponent: 8,\n ColorSpace: _('DeviceGray')\n }, true);\n var stream = new PDFStream(rgb, {\n Type: _('XObject'),\n Subtype: _('Image'),\n Width: width,\n Height: height,\n BitsPerComponent: 8,\n ColorSpace: _('DeviceRGB'),\n SMask: pdf.attach(mask)\n }, true);\n stream._resourceName = _('I' + ++RESOURCE_COUNTER);\n return stream;\n };\n }\n var PDFStandardFont = defclass(function PDFStandardFont(name) {\n this.props = {\n Type: _('Font'),\n Subtype: _('Type1'),\n BaseFont: _(name)\n };\n this._resourceName = _('F' + ++RESOURCE_COUNTER);\n }, {\n encodeText: function (str) {\n return new PDFString(str + '');\n }\n }, PDFDictionary);\n var PDFFont = defclass(function PDFFont(pdf, font, props) {\n props = this.props = props || {};\n props.Type = _('Font');\n props.Subtype = _('Type0');\n props.Encoding = _('Identity-H');\n this._pdf = pdf;\n this._font = font;\n this._sub = font.makeSubset();\n this._resourceName = _('F' + ++RESOURCE_COUNTER);\n var head = font.head;\n this.name = font.psName;\n var scale = this.scale = font.scale;\n this.bbox = [\n head.xMin * scale,\n head.yMin * scale,\n head.xMax * scale,\n head.yMax * scale\n ];\n this.italicAngle = font.post.italicAngle;\n this.ascent = font.ascent * scale;\n this.descent = font.descent * scale;\n this.lineGap = font.lineGap * scale;\n this.capHeight = font.os2.capHeight || this.ascent;\n this.xHeight = font.os2.xHeight || 0;\n this.stemV = 0;\n this.familyClass = (font.os2.familyClass || 0) >> 8;\n this.isSerif = this.familyClass >= 1 && this.familyClass <= 7;\n this.isScript = this.familyClass == 10;\n this.flags = (font.post.isFixedPitch ? 1 : 0) | (this.isSerif ? 1 << 1 : 0) | (this.isScript ? 1 << 3 : 0) | (this.italicAngle !== 0 ? 1 << 6 : 0) | 1 << 5;\n }, {\n encodeText: function (text) {\n return new PDFHexString(this._sub.encodeText(text + ''));\n },\n getTextWidth: function (fontSize, text) {\n var width = 0, codeMap = this._font.cmap.codeMap;\n for (var i = 0; i < text.length; ++i) {\n var glyphId = codeMap[text.charCodeAt(i)];\n width += this._font.widthOfGlyph(glyphId || 0);\n }\n return width * fontSize / 1000;\n },\n beforeRender: function () {\n var self = this;\n var sub = self._sub;\n var data = sub.render();\n var fontStream = new PDFStream(BinaryStream(data), { Length1: data.length }, true);\n var descriptor = self._pdf.attach(new PDFDictionary({\n Type: _('FontDescriptor'),\n FontName: _(self._sub.psName),\n FontBBox: self.bbox,\n Flags: self.flags,\n StemV: self.stemV,\n ItalicAngle: self.italicAngle,\n Ascent: self.ascent,\n Descent: self.descent,\n CapHeight: self.capHeight,\n XHeight: self.xHeight,\n FontFile2: self._pdf.attach(fontStream)\n }));\n var cmap = sub.ncid2ogid;\n var firstChar = sub.firstChar;\n var lastChar = sub.lastChar;\n var charWidths = [];\n (function loop(i, chunk) {\n if (i <= lastChar) {\n var gid = cmap[i];\n if (gid == null) {\n loop(i + 1);\n } else {\n if (!chunk) {\n charWidths.push(i, chunk = []);\n }\n chunk.push(self._font.widthOfGlyph(gid));\n loop(i + 1, chunk);\n }\n }\n }(firstChar));\n var descendant = new PDFDictionary({\n Type: _('Font'),\n Subtype: _('CIDFontType2'),\n BaseFont: _(self._sub.psName),\n CIDSystemInfo: new PDFDictionary({\n Registry: new PDFString('Adobe'),\n Ordering: new PDFString('Identity'),\n Supplement: 0\n }),\n FontDescriptor: descriptor,\n FirstChar: firstChar,\n LastChar: lastChar,\n DW: Math.round(self._font.widthOfGlyph(0)),\n W: charWidths,\n CIDToGIDMap: self._pdf.attach(self._makeCidToGidMap())\n });\n var dict = self.props;\n dict.BaseFont = _(self._sub.psName);\n dict.DescendantFonts = [self._pdf.attach(descendant)];\n var unimap = new PDFToUnicodeCmap(firstChar, lastChar, sub.subset);\n var unimapStream = new PDFStream(makeOutput(), null, true);\n unimapStream.data(unimap);\n dict.ToUnicode = self._pdf.attach(unimapStream);\n },\n _makeCidToGidMap: function () {\n return new PDFStream(BinaryStream(this._sub.cidToGidMap()), null, true);\n }\n }, PDFDictionary);\n var PDFToUnicodeCmap = defclass(function PDFUnicodeCMap(firstChar, lastChar, map) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n this.map = map;\n }, {\n render: function (out) {\n out.indent('/CIDInit /ProcSet findresource begin');\n out.indent('12 dict begin');\n out.indent('begincmap');\n out.indent('/CIDSystemInfo <<');\n out.indent(' /Registry (Adobe)');\n out.indent(' /Ordering (UCS)');\n out.indent(' /Supplement 0');\n out.indent('>> def');\n out.indent('/CMapName /Adobe-Identity-UCS def');\n out.indent('/CMapType 2 def');\n out.indent('1 begincodespacerange');\n out.indent(' <0000>');\n out.indent('endcodespacerange');\n var self = this;\n out.indent(self.lastChar - self.firstChar + 1, ' beginbfchar');\n out.withIndent(function () {\n for (var code = self.firstChar; code <= self.lastChar; ++code) {\n var unicode = self.map[code];\n var str = kendo.util.ucs2encode([unicode]);\n out.indent('<', zeropad(code.toString(16), 4), '>', '<');\n for (var i = 0; i < str.length; ++i) {\n out(zeropad(str.charCodeAt(i).toString(16), 4));\n }\n out('>');\n }\n });\n out.indent('endbfchar');\n out.indent('endcmap');\n out.indent('CMapName currentdict /CMap defineresource pop');\n out.indent('end');\n out.indent('end');\n }\n });\n function makeHash(a) {\n return a.map(function (x) {\n return isArray(x) ? makeHash(x) : typeof x == 'number' ? (Math.round(x * 1000) / 1000).toFixed(3) : x;\n }).join(' ');\n }\n function cacheColorGradientFunction(pdf, r1, g1, b1, r2, g2, b2) {\n var hash = makeHash([\n r1,\n g1,\n b1,\n r2,\n g2,\n b2\n ]);\n var func = pdf.GRAD_COL_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_COL_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [\n 0,\n 1\n ],\n Range: [\n 0,\n 1,\n 0,\n 1,\n 0,\n 1\n ],\n N: 1,\n C0: [\n r1,\n g1,\n b1\n ],\n C1: [\n r2,\n g2,\n b2\n ]\n }));\n }\n return func;\n }\n function cacheOpacityGradientFunction(pdf, a1, a2) {\n var hash = makeHash([\n a1,\n a2\n ]);\n var func = pdf.GRAD_OPC_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_OPC_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [\n 0,\n 1\n ],\n Range: [\n 0,\n 1\n ],\n N: 1,\n C0: [a1],\n C1: [a2]\n }));\n }\n return func;\n }\n function makeGradientFunctions(pdf, stops) {\n var hasAlpha = false;\n var opacities = [];\n var colors = [];\n var offsets = [];\n var encode = [];\n var i, prev, cur, prevColor, curColor;\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n colors.push(cacheColorGradientFunction(pdf, prevColor.r, prevColor.g, prevColor.b, curColor.r, curColor.g, curColor.b));\n if (prevColor.a < 1 || curColor.a < 1) {\n hasAlpha = true;\n }\n offsets.push(cur.offset);\n encode.push(0, 1);\n }\n if (hasAlpha) {\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n opacities.push(cacheOpacityGradientFunction(pdf, prevColor.a, curColor.a));\n }\n }\n offsets.pop();\n return {\n hasAlpha: hasAlpha,\n colors: assemble(colors),\n opacities: hasAlpha ? assemble(opacities) : null\n };\n function assemble(funcs) {\n if (funcs.length == 1) {\n return funcs[0];\n }\n return {\n FunctionType: 3,\n Functions: funcs,\n Domain: [\n 0,\n 1\n ],\n Bounds: offsets,\n Encode: encode\n };\n }\n }\n function cacheColorGradient(pdf, isRadial, stops, coords, funcs, box) {\n var shading, hash;\n if (!box) {\n var a = [isRadial].concat(coords);\n stops.forEach(function (x) {\n a.push(x.offset, x.color.r, x.color.g, x.color.b);\n });\n hash = makeHash(a);\n shading = pdf.GRAD_COL[hash];\n }\n if (!shading) {\n shading = new PDFDictionary({\n Type: _('Shading'),\n ShadingType: isRadial ? 3 : 2,\n ColorSpace: _('DeviceRGB'),\n Coords: coords,\n Domain: [\n 0,\n 1\n ],\n Function: funcs,\n Extend: [\n true,\n true\n ]\n });\n pdf.attach(shading);\n shading._resourceName = 'S' + ++RESOURCE_COUNTER;\n if (hash) {\n pdf.GRAD_COL[hash] = shading;\n }\n }\n return shading;\n }\n function cacheOpacityGradient(pdf, isRadial, stops, coords, funcs, box) {\n var opacity, hash;\n if (!box) {\n var a = [isRadial].concat(coords);\n stops.forEach(function (x) {\n a.push(x.offset, x.color.a);\n });\n hash = makeHash(a);\n opacity = pdf.GRAD_OPC[hash];\n }\n if (!opacity) {\n opacity = new PDFDictionary({\n Type: _('ExtGState'),\n AIS: false,\n CA: 1,\n ca: 1,\n SMask: {\n Type: _('Mask'),\n S: _('Luminosity'),\n G: pdf.attach(new PDFStream('/a0 gs /s0 sh', {\n Type: _('XObject'),\n Subtype: _('Form'),\n FormType: 1,\n BBox: box ? [\n box.left,\n box.top + box.height,\n box.left + box.width,\n box.top\n ] : [\n 0,\n 1,\n 1,\n 0\n ],\n Group: {\n Type: _('Group'),\n S: _('Transparency'),\n CS: _('DeviceGray'),\n I: true\n },\n Resources: {\n ExtGState: {\n a0: {\n CA: 1,\n ca: 1\n }\n },\n Shading: {\n s0: {\n ColorSpace: _('DeviceGray'),\n Coords: coords,\n Domain: [\n 0,\n 1\n ],\n ShadingType: isRadial ? 3 : 2,\n Function: funcs,\n Extend: [\n true,\n true\n ]\n }\n }\n }\n }))\n }\n });\n pdf.attach(opacity);\n opacity._resourceName = 'O' + ++RESOURCE_COUNTER;\n if (hash) {\n pdf.GRAD_OPC[hash] = opacity;\n }\n }\n return opacity;\n }\n function cacheGradient(pdf, gradient, box) {\n var isRadial = gradient.type == 'radial';\n var funcs = makeGradientFunctions(pdf, gradient.stops);\n var coords = isRadial ? [\n gradient.start.x,\n gradient.start.y,\n gradient.start.r,\n gradient.end.x,\n gradient.end.y,\n gradient.end.r\n ] : [\n gradient.start.x,\n gradient.start.y,\n gradient.end.x,\n gradient.end.y\n ];\n var shading = cacheColorGradient(pdf, isRadial, gradient.stops, coords, funcs.colors, gradient.userSpace && box);\n var opacity = funcs.hasAlpha ? cacheOpacityGradient(pdf, isRadial, gradient.stops, coords, funcs.opacities, gradient.userSpace && box) : null;\n return {\n hasAlpha: funcs.hasAlpha,\n shading: shading,\n opacity: opacity\n };\n }\n var PDFPage = defclass(function PDFPage(pdf, props) {\n this._pdf = pdf;\n this._rcount = 0;\n this._textMode = false;\n this._fontResources = {};\n this._gsResources = {};\n this._xResources = {};\n this._patResources = {};\n this._shResources = {};\n this._opacity = 1;\n this._matrix = [\n 1,\n 0,\n 0,\n 1,\n 0,\n 0\n ];\n this._annotations = [];\n this._font = null;\n this._fontSize = null;\n this._contextStack = [];\n props = this.props = props || {};\n props.Type = _('Page');\n props.ProcSet = [\n _('PDF'),\n _('Text'),\n _('ImageB'),\n _('ImageC'),\n _('ImageI')\n ];\n props.Resources = new PDFDictionary({\n Font: new PDFDictionary(this._fontResources),\n ExtGState: new PDFDictionary(this._gsResources),\n XObject: new PDFDictionary(this._xResources),\n Pattern: new PDFDictionary(this._patResources),\n Shading: new PDFDictionary(this._shResources)\n });\n props.Annots = this._annotations;\n }, {\n _out: function () {\n this._content.data.apply(null, arguments);\n },\n transform: function (a, b, c, d, e, f) {\n if (!isIdentityMatrix(arguments)) {\n this._matrix = mmul(arguments, this._matrix);\n this._out(a, ' ', b, ' ', c, ' ', d, ' ', e, ' ', f, ' cm');\n this._out(NL);\n }\n },\n translate: function (dx, dy) {\n this.transform(1, 0, 0, 1, dx, dy);\n },\n scale: function (sx, sy) {\n this.transform(sx, 0, 0, sy, 0, 0);\n },\n rotate: function (angle) {\n var cos = Math.cos(angle), sin = Math.sin(angle);\n this.transform(cos, sin, -sin, cos, 0, 0);\n },\n beginText: function () {\n this._textMode = true;\n this._out('BT', NL);\n },\n endText: function () {\n this._textMode = false;\n this._out('ET', NL);\n },\n _requireTextMode: function () {\n if (!this._textMode) {\n throw new Error('Text mode required; call page.beginText() first');\n }\n },\n _requireFont: function () {\n if (!this._font) {\n throw new Error('No font selected; call page.setFont() first');\n }\n },\n setFont: function (font, size) {\n this._requireTextMode();\n if (font == null) {\n font = this._font;\n } else if (!(font instanceof PDFFont)) {\n font = this._pdf.getFont(font);\n }\n if (size == null) {\n size = this._fontSize;\n }\n this._fontResources[font._resourceName] = font;\n this._font = font;\n this._fontSize = size;\n this._out(font._resourceName, ' ', size, ' Tf', NL);\n },\n setTextLeading: function (size) {\n this._requireTextMode();\n this._out(size, ' TL', NL);\n },\n setTextRenderingMode: function (mode) {\n this._requireTextMode();\n this._out(mode, ' Tr', NL);\n },\n showText: function (text, requestedWidth) {\n this._requireFont();\n if (text.length > 1 && requestedWidth && this._font instanceof PDFFont) {\n var outputWidth = this._font.getTextWidth(this._fontSize, text);\n var scale = requestedWidth / outputWidth * 100;\n this._out(scale, ' Tz ');\n }\n this._out(this._font.encodeText(text), ' Tj', NL);\n },\n showTextNL: function (text) {\n this._requireFont();\n this._out(this._font.encodeText(text), ' \\'', NL);\n },\n addLink: function (uri, box) {\n var ll = this._toPage({\n x: box.left,\n y: box.bottom\n });\n var ur = this._toPage({\n x: box.right,\n y: box.top\n });\n this._annotations.push(new PDFDictionary({\n Type: _('Annot'),\n Subtype: _('Link'),\n Rect: [\n ll.x,\n ll.y,\n ur.x,\n ur.y\n ],\n Border: [\n 0,\n 0,\n 0\n ],\n A: new PDFDictionary({\n Type: _('Action'),\n S: _('URI'),\n URI: new PDFString(uri)\n })\n }));\n },\n setStrokeColor: function (r, g, b) {\n this._out(r, ' ', g, ' ', b, ' RG', NL);\n },\n setOpacity: function (opacity) {\n this.setFillOpacity(opacity);\n this.setStrokeOpacity(opacity);\n this._opacity *= opacity;\n },\n setStrokeOpacity: function (opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, true);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, ' gs', NL);\n }\n },\n setFillColor: function (r, g, b) {\n this._out(r, ' ', g, ' ', b, ' rg', NL);\n },\n setFillOpacity: function (opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, false);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, ' gs', NL);\n }\n },\n gradient: function (gradient, box) {\n this.save();\n this.rect(box.left, box.top, box.width, box.height);\n this.clip();\n if (!gradient.userSpace) {\n this.transform(box.width, 0, 0, box.height, box.left, box.top);\n }\n var g = cacheGradient(this._pdf, gradient, box);\n var sname = g.shading._resourceName, oname;\n this._shResources[sname] = g.shading;\n if (g.hasAlpha) {\n oname = g.opacity._resourceName;\n this._gsResources[oname] = g.opacity;\n this._out('/' + oname + ' gs ');\n }\n this._out('/' + sname + ' sh', NL);\n this.restore();\n },\n setDashPattern: function (dashArray, dashPhase) {\n this._out(dashArray, ' ', dashPhase, ' d', NL);\n },\n setLineWidth: function (width) {\n this._out(width, ' w', NL);\n },\n setLineCap: function (lineCap) {\n this._out(lineCap, ' J', NL);\n },\n setLineJoin: function (lineJoin) {\n this._out(lineJoin, ' j', NL);\n },\n setMitterLimit: function (mitterLimit) {\n this._out(mitterLimit, ' M', NL);\n },\n save: function () {\n this._contextStack.push(this._context());\n this._out('q', NL);\n },\n restore: function () {\n this._out('Q', NL);\n this._context(this._contextStack.pop());\n },\n moveTo: function (x, y) {\n this._out(x, ' ', y, ' m', NL);\n },\n lineTo: function (x, y) {\n this._out(x, ' ', y, ' l', NL);\n },\n bezier: function (x1, y1, x2, y2, x3, y3) {\n this._out(x1, ' ', y1, ' ', x2, ' ', y2, ' ', x3, ' ', y3, ' c', NL);\n },\n bezier1: function (x1, y1, x3, y3) {\n this._out(x1, ' ', y1, ' ', x3, ' ', y3, ' y', NL);\n },\n bezier2: function (x2, y2, x3, y3) {\n this._out(x2, ' ', y2, ' ', x3, ' ', y3, ' v', NL);\n },\n close: function () {\n this._out('h', NL);\n },\n rect: function (x, y, w, h) {\n this._out(x, ' ', y, ' ', w, ' ', h, ' re', NL);\n },\n ellipse: function (x, y, rx, ry) {\n function _X(v) {\n return x + v;\n }\n function _Y(v) {\n return y + v;\n }\n var k = 0.5522847498307936;\n this.moveTo(_X(0), _Y(ry));\n this.bezier(_X(rx * k), _Y(ry), _X(rx), _Y(ry * k), _X(rx), _Y(0));\n this.bezier(_X(rx), _Y(-ry * k), _X(rx * k), _Y(-ry), _X(0), _Y(-ry));\n this.bezier(_X(-rx * k), _Y(-ry), _X(-rx), _Y(-ry * k), _X(-rx), _Y(0));\n this.bezier(_X(-rx), _Y(ry * k), _X(-rx * k), _Y(ry), _X(0), _Y(ry));\n },\n circle: function (x, y, r) {\n this.ellipse(x, y, r, r);\n },\n stroke: function () {\n this._out('S', NL);\n },\n nop: function () {\n this._out('n', NL);\n },\n clip: function () {\n this._out('W n', NL);\n },\n clipStroke: function () {\n this._out('W S', NL);\n },\n closeStroke: function () {\n this._out('s', NL);\n },\n fill: function () {\n this._out('f', NL);\n },\n fillStroke: function () {\n this._out('B', NL);\n },\n drawImage: function (url) {\n var img = this._pdf.getImage(url);\n if (img) {\n this._xResources[img._resourceName] = img;\n this._out(img._resourceName, ' Do', NL);\n }\n },\n comment: function (txt) {\n var self = this;\n txt.split(/\\r?\\n/g).forEach(function (line) {\n self._out('% ', line, NL);\n });\n },\n _context: function (val) {\n if (val != null) {\n this._opacity = val.opacity;\n this._matrix = val.matrix;\n } else {\n return {\n opacity: this._opacity,\n matrix: this._matrix\n };\n }\n },\n _toPage: function (p) {\n var m = this._matrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n return {\n x: a * p.x + c * p.y + e,\n y: b * p.x + d * p.y + f\n };\n }\n }, PDFDictionary);\n function BinaryStream(data) {\n var offset = 0, length = 0;\n if (data == null) {\n data = HAS_TYPED_ARRAYS ? new Uint8Array(256) : [];\n } else {\n length = data.length;\n }\n var ensure = HAS_TYPED_ARRAYS ? function (len) {\n if (len >= data.length) {\n var tmp = new Uint8Array(Math.max(len + 256, data.length * 2));\n tmp.set(data, 0);\n data = tmp;\n }\n } : function () {\n };\n var get = HAS_TYPED_ARRAYS ? function () {\n return new Uint8Array(data.buffer, 0, length);\n } : function () {\n return data;\n };\n var write = HAS_TYPED_ARRAYS ? function (bytes) {\n if (typeof bytes == 'string') {\n return writeString(bytes);\n }\n var len = bytes.length;\n ensure(offset + len);\n data.set(bytes, offset);\n offset += len;\n if (offset > length) {\n length = offset;\n }\n } : function (bytes) {\n if (typeof bytes == 'string') {\n return writeString(bytes);\n }\n for (var i = 0; i < bytes.length; ++i) {\n writeByte(bytes[i]);\n }\n };\n var slice = HAS_TYPED_ARRAYS ? function (start, length) {\n if (data.buffer.slice) {\n return new Uint8Array(data.buffer.slice(start, start + length));\n } else {\n var x = new Uint8Array(length);\n x.set(new Uint8Array(data.buffer, start, length));\n return x;\n }\n } : function (start, length) {\n return data.slice(start, start + length);\n };\n function eof() {\n return offset >= length;\n }\n function readByte() {\n return offset < length ? data[offset++] : 0;\n }\n function writeByte(b) {\n ensure(offset);\n data[offset++] = b & 255;\n if (offset > length) {\n length = offset;\n }\n }\n function readShort() {\n return readByte() << 8 | readByte();\n }\n function writeShort(w) {\n writeByte(w >> 8);\n writeByte(w);\n }\n function readShort_() {\n var w = readShort();\n return w >= 32768 ? w - 65536 : w;\n }\n function writeShort_(w) {\n writeShort(w < 0 ? w + 65536 : w);\n }\n function readLong() {\n return readShort() * 65536 + readShort();\n }\n function writeLong(w) {\n writeShort(w >>> 16 & 65535);\n writeShort(w & 65535);\n }\n function readLong_() {\n var w = readLong();\n return w >= 2147483648 ? w - 4294967296 : w;\n }\n function writeLong_(w) {\n writeLong(w < 0 ? w + 4294967296 : w);\n }\n function readFixed() {\n return readLong() / 65536;\n }\n function writeFixed(f) {\n writeLong(Math.round(f * 65536));\n }\n function readFixed_() {\n return readLong_() / 65536;\n }\n function writeFixed_(f) {\n writeLong_(Math.round(f * 65536));\n }\n function read(len) {\n return times(len, readByte);\n }\n function readString(len) {\n return String.fromCharCode.apply(String, read(len));\n }\n function writeString(str) {\n for (var i = 0; i < str.length; ++i) {\n writeByte(str.charCodeAt(i));\n }\n }\n function times(n, reader) {\n for (var ret = new Array(n), i = 0; i < n; ++i) {\n ret[i] = reader();\n }\n return ret;\n }\n var stream = {\n eof: eof,\n readByte: readByte,\n writeByte: writeByte,\n readShort: readShort,\n writeShort: writeShort,\n readLong: readLong,\n writeLong: writeLong,\n readFixed: readFixed,\n writeFixed: writeFixed,\n readShort_: readShort_,\n writeShort_: writeShort_,\n readLong_: readLong_,\n writeLong_: writeLong_,\n readFixed_: readFixed_,\n writeFixed_: writeFixed_,\n read: read,\n write: write,\n readString: readString,\n writeString: writeString,\n times: times,\n get: get,\n slice: slice,\n offset: function (pos) {\n if (pos != null) {\n offset = pos;\n return stream;\n }\n return offset;\n },\n skip: function (nbytes) {\n offset += nbytes;\n },\n toString: function () {\n throw new Error('FIX CALLER. BinaryStream is no longer convertible to string!');\n },\n length: function () {\n return length;\n },\n saveExcursion: function (f) {\n var pos = offset;\n try {\n return f();\n } finally {\n offset = pos;\n }\n },\n writeBase64: function (base64) {\n if (window.atob) {\n writeString(window.atob(base64));\n } else {\n write(BASE64.decode(base64));\n }\n },\n base64: function () {\n return BASE64.encode(get());\n }\n };\n return stream;\n }\n function unquote(str) {\n return str.replace(/^\\s*(['\"])(.*)\\1\\s*$/, '$2');\n }\n function parseFontDef(fontdef) {\n var rx = /^\\s*((normal|italic)\\s+)?((normal|small-caps)\\s+)?((normal|bold|\\d+)\\s+)?(([0-9.]+)(px|pt))(\\/(([0-9.]+)(px|pt)|normal))?\\s+(.*?)\\s*$/i;\n var m = rx.exec(fontdef);\n if (!m) {\n return {\n fontSize: 12,\n fontFamily: 'sans-serif'\n };\n }\n var fontSize = m[8] ? parseInt(m[8], 10) : 12;\n return {\n italic: m[2] && m[2].toLowerCase() == 'italic',\n variant: m[4],\n bold: m[6] && /bold|700/i.test(m[6]),\n fontSize: fontSize,\n lineHeight: m[12] ? m[12] == 'normal' ? fontSize : parseInt(m[12], 10) : null,\n fontFamily: m[14].split(/\\s*,\\s*/g).map(unquote)\n };\n }\n function getFontURL(style) {\n function mkFamily(name) {\n if (style.bold) {\n name += '|bold';\n }\n if (style.italic) {\n name += '|italic';\n }\n return name.toLowerCase();\n }\n var fontFamily = style.fontFamily;\n var name, url;\n if (fontFamily instanceof Array) {\n for (var i = 0; i < fontFamily.length; ++i) {\n name = mkFamily(fontFamily[i]);\n url = FONT_MAPPINGS[name];\n if (url) {\n break;\n }\n }\n } else {\n url = FONT_MAPPINGS[fontFamily.toLowerCase()];\n }\n while (typeof url == 'function') {\n url = url();\n }\n if (!url) {\n url = 'Times-Roman';\n }\n return url;\n }\n var FONT_MAPPINGS = {\n 'serif': 'Times-Roman',\n 'serif|bold': 'Times-Bold',\n 'serif|italic': 'Times-Italic',\n 'serif|bold|italic': 'Times-BoldItalic',\n 'sans-serif': 'Helvetica',\n 'sans-serif|bold': 'Helvetica-Bold',\n 'sans-serif|italic': 'Helvetica-Oblique',\n 'sans-serif|bold|italic': 'Helvetica-BoldOblique',\n 'monospace': 'Courier',\n 'monospace|bold': 'Courier-Bold',\n 'monospace|italic': 'Courier-Oblique',\n 'monospace|bold|italic': 'Courier-BoldOblique',\n 'zapfdingbats': 'ZapfDingbats',\n 'zapfdingbats|bold': 'ZapfDingbats',\n 'zapfdingbats|italic': 'ZapfDingbats',\n 'zapfdingbats|bold|italic': 'ZapfDingbats'\n };\n function fontAlias(alias, name) {\n alias = alias.toLowerCase();\n FONT_MAPPINGS[alias] = function () {\n return FONT_MAPPINGS[name];\n };\n FONT_MAPPINGS[alias + '|bold'] = function () {\n return FONT_MAPPINGS[name + '|bold'];\n };\n FONT_MAPPINGS[alias + '|italic'] = function () {\n return FONT_MAPPINGS[name + '|italic'];\n };\n FONT_MAPPINGS[alias + '|bold|italic'] = function () {\n return FONT_MAPPINGS[name + '|bold|italic'];\n };\n }\n fontAlias('Times New Roman', 'serif');\n fontAlias('Courier New', 'monospace');\n fontAlias('Arial', 'sans-serif');\n fontAlias('Helvetica', 'sans-serif');\n fontAlias('Verdana', 'sans-serif');\n fontAlias('Tahoma', 'sans-serif');\n fontAlias('Georgia', 'sans-serif');\n fontAlias('Monaco', 'monospace');\n fontAlias('Andale Mono', 'monospace');\n function defineFont(name, url) {\n if (arguments.length == 1) {\n for (var i in name) {\n if (hasOwnProperty(name, i)) {\n defineFont(i, name[i]);\n }\n }\n } else {\n name = name.toLowerCase();\n FONT_MAPPINGS[name] = url;\n switch (name) {\n case 'dejavu sans':\n FONT_MAPPINGS['sans-serif'] = url;\n break;\n case 'dejavu sans|bold':\n FONT_MAPPINGS['sans-serif|bold'] = url;\n break;\n case 'dejavu sans|italic':\n FONT_MAPPINGS['sans-serif|italic'] = url;\n break;\n case 'dejavu sans|bold|italic':\n FONT_MAPPINGS['sans-serif|bold|italic'] = url;\n break;\n case 'dejavu serif':\n FONT_MAPPINGS['serif'] = url;\n break;\n case 'dejavu serif|bold':\n FONT_MAPPINGS['serif|bold'] = url;\n break;\n case 'dejavu serif|italic':\n FONT_MAPPINGS['serif|italic'] = url;\n break;\n case 'dejavu serif|bold|italic':\n FONT_MAPPINGS['serif|bold|italic'] = url;\n break;\n case 'dejavu mono':\n FONT_MAPPINGS['monospace'] = url;\n break;\n case 'dejavu mono|bold':\n FONT_MAPPINGS['monospace|bold'] = url;\n break;\n case 'dejavu mono|italic':\n FONT_MAPPINGS['monospace|italic'] = url;\n break;\n case 'dejavu mono|bold|italic':\n FONT_MAPPINGS['monospace|bold|italic'] = url;\n break;\n }\n }\n }\n kendo.pdf = {\n Document: PDFDocument,\n BinaryStream: BinaryStream,\n defineFont: defineFont,\n parseFontDef: parseFontDef,\n getFontURL: getFontURL,\n loadFonts: loadFonts,\n loadImages: loadImages,\n getPaperOptions: getPaperOptions,\n TEXT_RENDERING_MODE: {\n fill: 0,\n stroke: 1,\n fillAndStroke: 2,\n invisible: 3,\n fillAndClip: 4,\n strokeAndClip: 5,\n fillStrokeClip: 6,\n clip: 7\n }\n };\n function mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1 * a2 + b1 * c2,\n a1 * b2 + b1 * d2,\n c1 * a2 + d1 * c2,\n c1 * b2 + d1 * d2,\n e1 * a2 + f1 * c2 + e2,\n e1 * b2 + f1 * d2 + f2\n ];\n }\n function isIdentityMatrix(m) {\n return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0;\n }\n }(window, parseFloat));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('pdf/ttf', [\n 'pdf/core',\n 'util/main'\n ], f);\n}(function () {\n (function (window) {\n 'use strict';\n function hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n function sortedKeys(obj) {\n return Object.keys(obj).sort(function (a, b) {\n return a - b;\n }).map(parseFloat);\n }\n var PDF = window.kendo.pdf;\n var BinaryStream = PDF.BinaryStream;\n function Directory(data) {\n this.raw = data;\n this.scalerType = data.readLong();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n var tables = this.tables = {};\n for (var i = 0; i < this.tableCount; ++i) {\n var entry = {\n tag: data.readString(4),\n checksum: data.readLong(),\n offset: data.readLong(),\n length: data.readLong()\n };\n tables[entry.tag] = entry;\n }\n }\n Directory.prototype = {\n readTable: function (name, Ctor) {\n var def = this.tables[name];\n if (!def) {\n throw new Error('Table ' + name + ' not found in directory');\n }\n return this[name] = def.table = new Ctor(this, def);\n },\n render: function (tables) {\n var tableCount = Object.keys(tables).length;\n var maxpow2 = Math.pow(2, Math.floor(Math.log(tableCount) / Math.LN2));\n var searchRange = maxpow2 * 16;\n var entrySelector = Math.floor(Math.log(maxpow2) / Math.LN2);\n var rangeShift = tableCount * 16 - searchRange;\n var out = BinaryStream();\n out.writeLong(this.scalerType);\n out.writeShort(tableCount);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n var directoryLength = tableCount * 16;\n var offset = out.offset() + directoryLength;\n var headOffset = null;\n var tableData = BinaryStream();\n for (var tag in tables) {\n if (hasOwnProperty(tables, tag)) {\n var table = tables[tag];\n out.writeString(tag);\n out.writeLong(this.checksum(table));\n out.writeLong(offset);\n out.writeLong(table.length);\n tableData.write(table);\n if (tag == 'head') {\n headOffset = offset;\n }\n offset += table.length;\n while (offset % 4) {\n tableData.writeByte(0);\n offset++;\n }\n }\n }\n out.write(tableData.get());\n var sum = this.checksum(out.get());\n var adjustment = 2981146554 - sum;\n out.offset(headOffset + 8);\n out.writeLong(adjustment);\n return out.get();\n },\n checksum: function (data) {\n data = BinaryStream(data);\n var sum = 0;\n while (!data.eof()) {\n sum += data.readLong();\n }\n return sum & 4294967295;\n }\n };\n function deftable(methods) {\n function Ctor(file, def) {\n this.definition = def;\n this.length = def.length;\n this.offset = def.offset;\n this.file = file;\n this.rawData = file.raw;\n this.parse(file.raw);\n }\n Ctor.prototype.raw = function () {\n return this.rawData.slice(this.offset, this.length);\n };\n for (var i in methods) {\n if (hasOwnProperty(methods, i)) {\n Ctor[i] = Ctor.prototype[i] = methods[i];\n }\n }\n return Ctor;\n }\n var HeadTable = deftable({\n parse: function (data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.revision = data.readLong();\n this.checkSumAdjustment = data.readLong();\n this.magicNumber = data.readLong();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.read(8);\n this.modified = data.read(8);\n this.xMin = data.readShort_();\n this.yMin = data.readShort_();\n this.xMax = data.readShort_();\n this.yMax = data.readShort_();\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort_();\n this.indexToLocFormat = data.readShort_();\n this.glyphDataFormat = data.readShort_();\n },\n render: function (indexToLocFormat) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeLong(this.revision);\n out.writeLong(0);\n out.writeLong(this.magicNumber);\n out.writeShort(this.flags);\n out.writeShort(this.unitsPerEm);\n out.write(this.created);\n out.write(this.modified);\n out.writeShort_(this.xMin);\n out.writeShort_(this.yMin);\n out.writeShort_(this.xMax);\n out.writeShort_(this.yMax);\n out.writeShort(this.macStyle);\n out.writeShort(this.lowestRecPPEM);\n out.writeShort_(this.fontDirectionHint);\n out.writeShort_(indexToLocFormat);\n out.writeShort_(this.glyphDataFormat);\n return out.get();\n }\n });\n var LocaTable = deftable({\n parse: function (data) {\n data.offset(this.offset);\n var format = this.file.head.indexToLocFormat;\n if (format === 0) {\n this.offsets = data.times(this.length / 2, function () {\n return 2 * data.readShort();\n });\n } else {\n this.offsets = data.times(this.length / 4, data.readLong);\n }\n },\n offsetOf: function (id) {\n return this.offsets[id];\n },\n lengthOf: function (id) {\n return this.offsets[id + 1] - this.offsets[id];\n },\n render: function (offsets) {\n var out = BinaryStream();\n var needsLongFormat = offsets[offsets.length - 1] > 65535;\n for (var i = 0; i < offsets.length; ++i) {\n if (needsLongFormat) {\n out.writeLong(offsets[i]);\n } else {\n out.writeShort(offsets[i] / 2);\n }\n }\n return {\n format: needsLongFormat ? 1 : 0,\n table: out.get()\n };\n }\n });\n var HheaTable = deftable({\n parse: function (data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort_();\n this.minRightSideBearing = data.readShort_();\n this.xMaxExtent = data.readShort_();\n this.caretSlopeRise = data.readShort_();\n this.caretSlopeRun = data.readShort_();\n this.caretOffset = data.readShort_();\n data.skip(4 * 2);\n this.metricDataFormat = data.readShort_();\n this.numOfLongHorMetrics = data.readShort();\n },\n render: function (ids) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort_(this.ascent);\n out.writeShort_(this.descent);\n out.writeShort_(this.lineGap);\n out.writeShort(this.advanceWidthMax);\n out.writeShort_(this.minLeftSideBearing);\n out.writeShort_(this.minRightSideBearing);\n out.writeShort_(this.xMaxExtent);\n out.writeShort_(this.caretSlopeRise);\n out.writeShort_(this.caretSlopeRun);\n out.writeShort_(this.caretOffset);\n out.write([\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ]);\n out.writeShort_(this.metricDataFormat);\n out.writeShort(ids.length);\n return out.get();\n }\n });\n var MaxpTable = deftable({\n parse: function (data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.numGlyphs = data.readShort();\n this.maxPoints = data.readShort();\n this.maxContours = data.readShort();\n this.maxComponentPoints = data.readShort();\n this.maxComponentContours = data.readShort();\n this.maxZones = data.readShort();\n this.maxTwilightPoints = data.readShort();\n this.maxStorage = data.readShort();\n this.maxFunctionDefs = data.readShort();\n this.maxInstructionDefs = data.readShort();\n this.maxStackElements = data.readShort();\n this.maxSizeOfInstructions = data.readShort();\n this.maxComponentElements = data.readShort();\n this.maxComponentDepth = data.readShort();\n },\n render: function (glyphIds) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort(glyphIds.length);\n out.writeShort(this.maxPoints);\n out.writeShort(this.maxContours);\n out.writeShort(this.maxComponentPoints);\n out.writeShort(this.maxComponentContours);\n out.writeShort(this.maxZones);\n out.writeShort(this.maxTwilightPoints);\n out.writeShort(this.maxStorage);\n out.writeShort(this.maxFunctionDefs);\n out.writeShort(this.maxInstructionDefs);\n out.writeShort(this.maxStackElements);\n out.writeShort(this.maxSizeOfInstructions);\n out.writeShort(this.maxComponentElements);\n out.writeShort(this.maxComponentDepth);\n return out.get();\n }\n });\n var HmtxTable = deftable({\n parse: function (data) {\n data.offset(this.offset);\n var dir = this.file, hhea = dir.hhea;\n this.metrics = data.times(hhea.numOfLongHorMetrics, function () {\n return {\n advance: data.readShort(),\n lsb: data.readShort_()\n };\n });\n var lsbCount = dir.maxp.numGlyphs - dir.hhea.numOfLongHorMetrics;\n this.leftSideBearings = data.times(lsbCount, data.readShort_);\n },\n forGlyph: function (id) {\n var metrics = this.metrics;\n var n = metrics.length;\n if (id < n) {\n return metrics[id];\n }\n return {\n advance: metrics[n - 1].advance,\n lsb: this.leftSideBearings[id - n]\n };\n },\n render: function (glyphIds) {\n var out = BinaryStream();\n for (var i = 0; i < glyphIds.length; ++i) {\n var m = this.forGlyph(glyphIds[i]);\n out.writeShort(m.advance);\n out.writeShort_(m.lsb);\n }\n return out.get();\n }\n });\n var GlyfTable = function () {\n function SimpleGlyph(raw) {\n this.raw = raw;\n }\n SimpleGlyph.prototype = {\n compound: false,\n render: function () {\n return this.raw.get();\n }\n };\n var ARG_1_AND_2_ARE_WORDS = 1;\n var WE_HAVE_A_SCALE = 8;\n var MORE_COMPONENTS = 32;\n var WE_HAVE_AN_X_AND_Y_SCALE = 64;\n var WE_HAVE_A_TWO_BY_TWO = 128;\n function CompoundGlyph(data) {\n this.raw = data;\n var ids = this.glyphIds = [];\n var offsets = this.idOffsets = [];\n while (true) {\n var flags = data.readShort();\n offsets.push(data.offset());\n ids.push(data.readShort());\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n data.skip(flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.skip(8);\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.skip(4);\n } else if (flags & WE_HAVE_A_SCALE) {\n data.skip(2);\n }\n }\n }\n CompoundGlyph.prototype = {\n compound: true,\n render: function (old2new) {\n var out = BinaryStream(this.raw.get());\n for (var i = 0; i < this.glyphIds.length; ++i) {\n var id = this.glyphIds[i];\n out.offset(this.idOffsets[i]);\n out.writeShort(old2new[id]);\n }\n return out.get();\n }\n };\n return deftable({\n parse: function () {\n this.cache = {};\n },\n glyphFor: function (id) {\n var cache = this.cache;\n if (hasOwnProperty(cache, id)) {\n return cache[id];\n }\n var loca = this.file.loca;\n var length = loca.lengthOf(id);\n if (length === 0) {\n return cache[id] = null;\n }\n var data = this.rawData;\n var offset = this.offset + loca.offsetOf(id);\n var raw = BinaryStream(data.slice(offset, length));\n var numberOfContours = raw.readShort_();\n var xMin = raw.readShort_();\n var yMin = raw.readShort_();\n var xMax = raw.readShort_();\n var yMax = raw.readShort_();\n var glyph = cache[id] = numberOfContours == -1 ? new CompoundGlyph(raw) : new SimpleGlyph(raw);\n glyph.numberOfContours = numberOfContours;\n glyph.xMin = xMin;\n glyph.yMin = yMin;\n glyph.xMax = xMax;\n glyph.yMax = yMax;\n return glyph;\n },\n render: function (glyphs, oldIds, old2new) {\n var out = BinaryStream(), offsets = [];\n for (var i = 0; i < oldIds.length; ++i) {\n var id = oldIds[i];\n var glyph = glyphs[id];\n offsets.push(out.offset());\n if (glyph) {\n out.write(glyph.render(old2new));\n }\n }\n offsets.push(out.offset());\n return {\n table: out.get(),\n offsets: offsets\n };\n }\n });\n }();\n var NameTable = function () {\n function NameEntry(text, entry) {\n this.text = text;\n this.length = text.length;\n this.platformID = entry.platformID;\n this.platformSpecificID = entry.platformSpecificID;\n this.languageID = entry.languageID;\n this.nameID = entry.nameID;\n }\n return deftable({\n parse: function (data) {\n data.offset(this.offset);\n data.readShort();\n var count = data.readShort();\n var stringOffset = this.offset + data.readShort();\n var nameRecords = data.times(count, function () {\n return {\n platformID: data.readShort(),\n platformSpecificID: data.readShort(),\n languageID: data.readShort(),\n nameID: data.readShort(),\n length: data.readShort(),\n offset: data.readShort() + stringOffset\n };\n });\n var strings = this.strings = {};\n for (var i = 0; i < nameRecords.length; ++i) {\n var rec = nameRecords[i];\n data.offset(rec.offset);\n var text = data.readString(rec.length);\n if (!strings[rec.nameID]) {\n strings[rec.nameID] = [];\n }\n strings[rec.nameID].push(new NameEntry(text, rec));\n }\n this.postscriptEntry = strings[6][0];\n this.postscriptName = this.postscriptEntry.text.replace(/[^\\x20-\\x7F]/g, '');\n },\n render: function (psName) {\n var strings = this.strings;\n var strCount = 0;\n for (var i in strings) {\n if (hasOwnProperty(strings, i)) {\n strCount += strings[i].length;\n }\n }\n var out = BinaryStream();\n var strTable = BinaryStream();\n out.writeShort(0);\n out.writeShort(strCount);\n out.writeShort(6 + 12 * strCount);\n for (i in strings) {\n if (hasOwnProperty(strings, i)) {\n var list = i == 6 ? [new NameEntry(psName, this.postscriptEntry)] : strings[i];\n for (var j = 0; j < list.length; ++j) {\n var str = list[j];\n out.writeShort(str.platformID);\n out.writeShort(str.platformSpecificID);\n out.writeShort(str.languageID);\n out.writeShort(str.nameID);\n out.writeShort(str.length);\n out.writeShort(strTable.offset());\n strTable.writeString(str.text);\n }\n }\n }\n out.write(strTable.get());\n return out.get();\n }\n });\n }();\n var PostTable = function () {\n var POSTSCRIPT_GLYPHS = '.notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat'.split(/\\s+/g);\n return deftable({\n parse: function (data) {\n data.offset(this.offset);\n this.format = data.readLong();\n this.italicAngle = data.readFixed_();\n this.underlinePosition = data.readShort_();\n this.underlineThickness = data.readShort_();\n this.isFixedPitch = data.readLong();\n this.minMemType42 = data.readLong();\n this.maxMemType42 = data.readLong();\n this.minMemType1 = data.readLong();\n this.maxMemType1 = data.readLong();\n var numberOfGlyphs;\n switch (this.format) {\n case 65536:\n case 196608:\n break;\n case 131072:\n numberOfGlyphs = data.readShort();\n this.glyphNameIndex = data.times(numberOfGlyphs, data.readShort);\n this.names = [];\n var limit = this.offset + this.length;\n while (data.offset() < limit) {\n this.names.push(data.readString(data.readByte()));\n }\n break;\n case 151552:\n numberOfGlyphs = data.readShort();\n this.offsets = data.read(numberOfGlyphs);\n break;\n case 262144:\n this.map = data.times(this.file.maxp.numGlyphs, data.readShort);\n break;\n }\n },\n glyphFor: function (code) {\n switch (this.format) {\n case 65536:\n return POSTSCRIPT_GLYPHS[code] || '.notdef';\n case 131072:\n var index = this.glyphNameIndex[code];\n if (index < POSTSCRIPT_GLYPHS.length) {\n return POSTSCRIPT_GLYPHS[index];\n }\n return this.names[index - POSTSCRIPT_GLYPHS.length] || '.notdef';\n case 151552:\n case 196608:\n return '.notdef';\n case 262144:\n return this.map[code] || 65535;\n }\n },\n render: function (mapping) {\n if (this.format == 196608) {\n return this.raw();\n }\n var out = BinaryStream(this.rawData.slice(this.offset, 32));\n out.writeLong(131072);\n out.offset(32);\n var indexes = [];\n var strings = [];\n for (var i = 0; i < mapping.length; ++i) {\n var id = mapping[i];\n var post = this.glyphFor(id);\n var index = POSTSCRIPT_GLYPHS.indexOf(post);\n if (index >= 0) {\n indexes.push(index);\n } else {\n indexes.push(POSTSCRIPT_GLYPHS.length + strings.length);\n strings.push(post);\n }\n }\n out.writeShort(mapping.length);\n for (i = 0; i < indexes.length; ++i) {\n out.writeShort(indexes[i]);\n }\n for (i = 0; i < strings.length; ++i) {\n out.writeByte(strings[i].length);\n out.writeString(strings[i]);\n }\n return out.get();\n }\n });\n }();\n var CmapTable = function () {\n function CmapEntry(data, offset, codeMap) {\n var self = this;\n self.platformID = data.readShort();\n self.platformSpecificID = data.readShort();\n self.offset = offset + data.readLong();\n data.saveExcursion(function () {\n var code;\n data.offset(self.offset);\n self.format = data.readShort();\n switch (self.format) {\n case 0:\n self.length = data.readShort();\n self.language = data.readShort();\n for (var i = 0; i < 256; ++i) {\n codeMap[i] = data.readByte();\n }\n break;\n case 4:\n self.length = data.readShort();\n self.language = data.readShort();\n var segCount = data.readShort() / 2;\n data.skip(6);\n var endCode = data.times(segCount, data.readShort);\n data.skip(2);\n var startCode = data.times(segCount, data.readShort);\n var idDelta = data.times(segCount, data.readShort_);\n var idRangeOffset = data.times(segCount, data.readShort);\n var count = (self.length + self.offset - data.offset()) / 2;\n var glyphIds = data.times(count, data.readShort);\n for (i = 0; i < segCount; ++i) {\n var start = startCode[i], end = endCode[i];\n for (code = start; code <= end; ++code) {\n var glyphId;\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n var index = idRangeOffset[i] / 2 - (segCount - i) + (code - start);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n codeMap[code] = glyphId & 65535;\n }\n }\n break;\n case 6:\n self.length = data.readShort();\n self.language = data.readShort();\n code = data.readShort();\n var length = data.readShort();\n while (length-- > 0) {\n codeMap[code++] = data.readShort();\n }\n break;\n case 12:\n data.readShort();\n self.length = data.readLong();\n self.language = data.readLong();\n var ngroups = data.readLong();\n while (ngroups-- > 0) {\n code = data.readLong();\n var endCharCode = data.readLong();\n var glyphCode = data.readLong();\n while (code <= endCharCode) {\n codeMap[code++] = glyphCode++;\n }\n }\n break;\n default:\n if (window.console) {\n window.console.error('Unhandled CMAP format: ' + self.format);\n }\n }\n });\n }\n function renderCharmap(ncid2ogid, ogid2ngid) {\n var codes = sortedKeys(ncid2ogid);\n var startCodes = [];\n var endCodes = [];\n var last = null;\n var diff = null;\n function new_gid(charcode) {\n return ogid2ngid[ncid2ogid[charcode]];\n }\n for (var i = 0; i < codes.length; ++i) {\n var code = codes[i];\n var gid = new_gid(code);\n var delta = gid - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(65535);\n startCodes.push(65535);\n var segCount = startCodes.length;\n var segCountX2 = segCount * 2;\n var searchRange = 2 * Math.pow(2, Math.floor(Math.log(segCount) / Math.LN2));\n var entrySelector = Math.log(searchRange / 2) / Math.LN2;\n var rangeShift = segCountX2 - searchRange;\n var deltas = [];\n var rangeOffsets = [];\n var glyphIds = [];\n for (i = 0; i < segCount; ++i) {\n var startCode = startCodes[i];\n var endCode = endCodes[i];\n if (startCode == 65535) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n var startGlyph = new_gid(startCode);\n if (startCode - startGlyph >= 32768) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIds.length + segCount - i));\n for (var j = startCode; j <= endCode; ++j) {\n glyphIds.push(new_gid(j));\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n var out = BinaryStream();\n out.writeShort(3);\n out.writeShort(1);\n out.writeLong(12);\n out.writeShort(4);\n out.writeShort(16 + segCount * 8 + glyphIds.length * 2);\n out.writeShort(0);\n out.writeShort(segCountX2);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n endCodes.forEach(out.writeShort);\n out.writeShort(0);\n startCodes.forEach(out.writeShort);\n deltas.forEach(out.writeShort_);\n rangeOffsets.forEach(out.writeShort);\n glyphIds.forEach(out.writeShort);\n return out.get();\n }\n return deftable({\n parse: function (data) {\n var self = this;\n var offset = self.offset;\n data.offset(offset);\n self.codeMap = {};\n self.version = data.readShort();\n var tableCount = data.readShort();\n self.tables = data.times(tableCount, function () {\n return new CmapEntry(data, offset, self.codeMap);\n });\n },\n render: function (ncid2ogid, ogid2ngid) {\n var out = BinaryStream();\n out.writeShort(0);\n out.writeShort(1);\n out.write(renderCharmap(ncid2ogid, ogid2ngid));\n return out.get();\n }\n });\n }();\n var OS2Table = deftable({\n parse: function (data) {\n data.offset(this.offset);\n this.version = data.readShort();\n this.averageCharWidth = data.readShort_();\n this.weightClass = data.readShort();\n this.widthClass = data.readShort();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort_();\n this.ySubscriptYSize = data.readShort_();\n this.ySubscriptXOffset = data.readShort_();\n this.ySubscriptYOffset = data.readShort_();\n this.ySuperscriptXSize = data.readShort_();\n this.ySuperscriptYSize = data.readShort_();\n this.ySuperscriptXOffset = data.readShort_();\n this.ySuperscriptYOffset = data.readShort_();\n this.yStrikeoutSize = data.readShort_();\n this.yStrikeoutPosition = data.readShort_();\n this.familyClass = data.readShort_();\n this.panose = data.times(10, data.readByte);\n this.charRange = data.times(4, data.readLong);\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n if (this.version > 0) {\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = data.times(2, data.readLong);\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n this.maxContext = data.readShort();\n }\n }\n },\n render: function () {\n return this.raw();\n }\n });\n var subsetTag = 100000;\n function nextSubsetTag() {\n var ret = '', n = subsetTag + '';\n for (var i = 0; i < n.length; ++i) {\n ret += String.fromCharCode(n.charCodeAt(i) - 48 + 65);\n }\n ++subsetTag;\n return ret;\n }\n function Subfont(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.ogid2ngid = { 0: 0 };\n this.ngid2ogid = { 0: 0 };\n this.ncid2ogid = {};\n this.next = this.firstChar = 1;\n this.nextGid = 1;\n this.psName = nextSubsetTag() + '+' + this.font.psName;\n }\n Subfont.prototype = {\n use: function (ch) {\n var self = this;\n if (typeof ch == 'string') {\n return kendo.util.ucs2decode(ch).reduce(function (ret, code) {\n return ret + String.fromCharCode(self.use(code));\n }, '');\n }\n var code = self.unicodes[ch];\n if (!code) {\n code = self.next++;\n self.subset[code] = ch;\n self.unicodes[ch] = code;\n var old_gid = self.font.cmap.codeMap[ch];\n if (old_gid) {\n self.ncid2ogid[code] = old_gid;\n if (self.ogid2ngid[old_gid] == null) {\n var new_gid = self.nextGid++;\n self.ogid2ngid[old_gid] = new_gid;\n self.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n return code;\n },\n encodeText: function (text) {\n return this.use(text);\n },\n glyphIds: function () {\n return sortedKeys(this.ogid2ngid);\n },\n glyphsFor: function (glyphIds, result) {\n if (!result) {\n result = {};\n }\n for (var i = 0; i < glyphIds.length; ++i) {\n var id = glyphIds[i];\n if (!result[id]) {\n var glyph = result[id] = this.font.glyf.glyphFor(id);\n if (glyph && glyph.compound) {\n this.glyphsFor(glyph.glyphIds, result);\n }\n }\n }\n return result;\n },\n render: function () {\n var glyphs = this.glyphsFor(this.glyphIds());\n for (var old_gid in glyphs) {\n if (hasOwnProperty(glyphs, old_gid)) {\n old_gid = parseInt(old_gid, 10);\n if (this.ogid2ngid[old_gid] == null) {\n var new_gid = this.nextGid++;\n this.ogid2ngid[old_gid] = new_gid;\n this.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n var new_gid_ids = sortedKeys(this.ngid2ogid);\n var old_gid_ids = new_gid_ids.map(function (id) {\n return this.ngid2ogid[id];\n }, this);\n var font = this.font;\n var glyf = font.glyf.render(glyphs, old_gid_ids, this.ogid2ngid);\n var loca = font.loca.render(glyf.offsets);\n this.lastChar = this.next - 1;\n var tables = {\n 'cmap': CmapTable.render(this.ncid2ogid, this.ogid2ngid),\n 'glyf': glyf.table,\n 'loca': loca.table,\n 'hmtx': font.hmtx.render(old_gid_ids),\n 'hhea': font.hhea.render(old_gid_ids),\n 'maxp': font.maxp.render(old_gid_ids),\n 'post': font.post.render(old_gid_ids),\n 'name': font.name.render(this.psName),\n 'head': font.head.render(loca.format),\n 'OS/2': font.os2.render()\n };\n return this.font.directory.render(tables);\n },\n cidToGidMap: function () {\n var out = BinaryStream(), len = 0;\n for (var cid = this.firstChar; cid < this.next; ++cid) {\n while (len < cid) {\n out.writeShort(0);\n len++;\n }\n var old_gid = this.ncid2ogid[cid];\n if (old_gid) {\n var new_gid = this.ogid2ngid[old_gid];\n out.writeShort(new_gid);\n } else {\n out.writeShort(0);\n }\n len++;\n }\n return out.get();\n }\n };\n function TTFFont(rawData, name) {\n var self = this;\n var data = self.contents = BinaryStream(rawData);\n if (data.readString(4) == 'ttcf') {\n if (!name) {\n throw new Error('Must specify a name for TTC files');\n }\n data.readLong();\n var numFonts = data.readLong();\n for (var i = 0; i < numFonts; ++i) {\n var offset = data.readLong();\n data.saveExcursion(function () {\n data.offset(offset);\n self.parse();\n });\n if (self.psName == name) {\n return;\n }\n }\n throw new Error('Font ' + name + ' not found in collection');\n } else {\n data.offset(0);\n self.parse();\n }\n }\n TTFFont.prototype = {\n parse: function () {\n var dir = this.directory = new Directory(this.contents);\n this.head = dir.readTable('head', HeadTable);\n this.loca = dir.readTable('loca', LocaTable);\n this.hhea = dir.readTable('hhea', HheaTable);\n this.maxp = dir.readTable('maxp', MaxpTable);\n this.hmtx = dir.readTable('hmtx', HmtxTable);\n this.glyf = dir.readTable('glyf', GlyfTable);\n this.name = dir.readTable('name', NameTable);\n this.post = dir.readTable('post', PostTable);\n this.cmap = dir.readTable('cmap', CmapTable);\n this.os2 = dir.readTable('OS/2', OS2Table);\n this.psName = this.name.postscriptName;\n this.ascent = this.os2.ascent || this.hhea.ascent;\n this.descent = this.os2.descent || this.hhea.descent;\n this.lineGap = this.os2.lineGap || this.hhea.lineGap;\n this.scale = 1000 / this.head.unitsPerEm;\n },\n widthOfGlyph: function (glyph) {\n return this.hmtx.forGlyph(glyph).advance * this.scale;\n },\n makeSubset: function () {\n return new Subfont(this);\n }\n };\n PDF.TTFFont = TTFFont;\n }(window));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('util/text-metrics', [\n 'kendo.core',\n 'util/main'\n ], f);\n}(function () {\n (function ($) {\n var doc = document, kendo = window.kendo, Class = kendo.Class, util = kendo.util, defined = util.defined;\n var LRUCache = Class.extend({\n init: function (size) {\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n put: function (key, value) {\n var lru = this, map = lru._map, entry = {\n key: key,\n value: value\n };\n map[key] = entry;\n if (!lru._head) {\n lru._head = lru._tail = entry;\n } else {\n lru._tail.newer = entry;\n entry.older = lru._tail;\n lru._tail = entry;\n }\n if (lru._length >= lru._size) {\n map[lru._head.key] = null;\n lru._head = lru._head.newer;\n lru._head.older = null;\n } else {\n lru._length++;\n }\n },\n get: function (key) {\n var lru = this, entry = lru._map[key];\n if (entry) {\n if (entry === lru._head && entry !== lru._tail) {\n lru._head = entry.newer;\n lru._head.older = null;\n }\n if (entry !== lru._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n entry.older = lru._tail;\n entry.newer = null;\n lru._tail.newer = entry;\n lru._tail = entry;\n }\n return entry.value;\n }\n }\n });\n var defaultMeasureBox = $('