hjkhjkjhkhjkgjghjhgjhgjghjhghjghjhgjjnbvnvbnvk
bnmbnmbnhjkhjkhjkhjktyutyutyuytutyutyutyhgjgjghjgjghjguytutyry
/
home
/
b4h4ej4a6kj6
/
public_html
/
mahetechnologies.co.uk
/
workshop
/
admin
/
js
/
jsPDF-master
/
src
/
modules
/
Upload FileeE
HOME
import { jsPDF } from "../jspdf.js"; import { toPDFName } from "../libs/pdfname.js"; /** * @name utf8 * @module */ (function(jsPDF) { "use strict"; var jsPDFAPI = jsPDF.API; /***************************************************************************************************/ /* function : pdfEscape16 */ /* comment : The character id of a 2-byte string is converted to a hexadecimal number by obtaining */ /* the corresponding glyph id and width, and then adding padding to the string. */ /***************************************************************************************************/ var pdfEscape16 = (jsPDFAPI.pdfEscape16 = function(text, font) { var widths = font.metadata.Unicode.widths; var padz = ["", "0", "00", "000", "0000"]; var ar = [""]; for (var i = 0, l = text.length, t; i < l; ++i) { t = font.metadata.characterToGlyph(text.charCodeAt(i)); font.metadata.glyIdsUsed.push(t); font.metadata.toUnicode[t] = text.charCodeAt(i); if (widths.indexOf(t) == -1) { widths.push(t); widths.push([parseInt(font.metadata.widthOfGlyph(t), 10)]); } if (t == "0") { //Spaces are not allowed in cmap. return ar.join(""); } else { t = t.toString(16); ar.push(padz[4 - t.length], t); } } return ar.join(""); }); var toUnicodeCmap = function(map) { var code, codes, range, unicode, unicodeMap, _i, _len; unicodeMap = "/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n /Registry (Adobe)\n /Ordering (UCS)\n /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange"; codes = Object.keys(map).sort(function(a, b) { return a - b; }); range = []; for (_i = 0, _len = codes.length; _i < _len; _i++) { code = codes[_i]; if (range.length >= 100) { unicodeMap += "\n" + range.length + " beginbfchar\n" + range.join("\n") + "\nendbfchar"; range = []; } if ( map[code] !== undefined && map[code] !== null && typeof map[code].toString === "function" ) { unicode = ("0000" + map[code].toString(16)).slice(-4); code = ("0000" + (+code).toString(16)).slice(-4); range.push("<" + code + "><" + unicode + ">"); } } if (range.length) { unicodeMap += "\n" + range.length + " beginbfchar\n" + range.join("\n") + "\nendbfchar\n"; } unicodeMap += "endcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"; return unicodeMap; }; var identityHFunction = function(options) { var font = options.font; var out = options.out; var newObject = options.newObject; var putStream = options.putStream; if ( font.metadata instanceof jsPDF.API.TTFFont && font.encoding === "Identity-H" ) { //Tag with Identity-H var widths = font.metadata.Unicode.widths; var data = font.metadata.subset.encode(font.metadata.glyIdsUsed, 1); var pdfOutput = data; var pdfOutput2 = ""; for (var i = 0; i < pdfOutput.length; i++) { pdfOutput2 += String.fromCharCode(pdfOutput[i]); } var fontTable = newObject(); putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable }); out("endobj"); var cmap = newObject(); var cmapData = toUnicodeCmap(font.metadata.toUnicode); putStream({ data: cmapData, addLength1: true, objectId: cmap }); out("endobj"); var fontDescriptor = newObject(); out("<<"); out("/Type /FontDescriptor"); out("/FontName /" + toPDFName(font.fontName)); out("/FontFile2 " + fontTable + " 0 R"); out("/FontBBox " + jsPDF.API.PDFObject.convert(font.metadata.bbox)); out("/Flags " + font.metadata.flags); out("/StemV " + font.metadata.stemV); out("/ItalicAngle " + font.metadata.italicAngle); out("/Ascent " + font.metadata.ascender); out("/Descent " + font.metadata.decender); out("/CapHeight " + font.metadata.capHeight); out(">>"); out("endobj"); var DescendantFont = newObject(); out("<<"); out("/Type /Font"); out("/BaseFont /" + toPDFName(font.fontName)); out("/FontDescriptor " + fontDescriptor + " 0 R"); out("/W " + jsPDF.API.PDFObject.convert(widths)); out("/CIDToGIDMap /Identity"); out("/DW 1000"); out("/Subtype /CIDFontType2"); out("/CIDSystemInfo"); out("<<"); out("/Supplement 0"); out("/Registry (Adobe)"); out("/Ordering (" + font.encoding + ")"); out(">>"); out(">>"); out("endobj"); font.objectNumber = newObject(); out("<<"); out("/Type /Font"); out("/Subtype /Type0"); out("/ToUnicode " + cmap + " 0 R"); out("/BaseFont /" + toPDFName(font.fontName)); out("/Encoding /" + font.encoding); out("/DescendantFonts [" + DescendantFont + " 0 R]"); out(">>"); out("endobj"); font.isAlreadyPutted = true; } }; jsPDFAPI.events.push([ "putFont", function(args) { identityHFunction(args); } ]); var winAnsiEncodingFunction = function(options) { var font = options.font; var out = options.out; var newObject = options.newObject; var putStream = options.putStream; if ( font.metadata instanceof jsPDF.API.TTFFont && font.encoding === "WinAnsiEncoding" ) { //Tag with WinAnsi encoding var data = font.metadata.rawData; var pdfOutput = data; var pdfOutput2 = ""; for (var i = 0; i < pdfOutput.length; i++) { pdfOutput2 += String.fromCharCode(pdfOutput[i]); } var fontTable = newObject(); putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable }); out("endobj"); var cmap = newObject(); var cmapData = toUnicodeCmap(font.metadata.toUnicode); putStream({ data: cmapData, addLength1: true, objectId: cmap }); out("endobj"); var fontDescriptor = newObject(); out("<<"); out("/Descent " + font.metadata.decender); out("/CapHeight " + font.metadata.capHeight); out("/StemV " + font.metadata.stemV); out("/Type /FontDescriptor"); out("/FontFile2 " + fontTable + " 0 R"); out("/Flags 96"); out("/FontBBox " + jsPDF.API.PDFObject.convert(font.metadata.bbox)); out("/FontName /" + toPDFName(font.fontName)); out("/ItalicAngle " + font.metadata.italicAngle); out("/Ascent " + font.metadata.ascender); out(">>"); out("endobj"); font.objectNumber = newObject(); for (var j = 0; j < font.metadata.hmtx.widths.length; j++) { font.metadata.hmtx.widths[j] = parseInt( font.metadata.hmtx.widths[j] * (1000 / font.metadata.head.unitsPerEm) ); //Change the width of Em units to Point units. } out( "<</Subtype/TrueType/Type/Font/ToUnicode " + cmap + " 0 R/BaseFont/" + toPDFName(font.fontName) + "/FontDescriptor " + fontDescriptor + " 0 R" + "/Encoding/" + font.encoding + " /FirstChar 29 /LastChar 255 /Widths " + jsPDF.API.PDFObject.convert(font.metadata.hmtx.widths) + ">>" ); out("endobj"); font.isAlreadyPutted = true; } }; jsPDFAPI.events.push([ "putFont", function(args) { winAnsiEncodingFunction(args); } ]); var utf8TextFunction = function(args) { var text = args.text || ""; var x = args.x; var y = args.y; var options = args.options || {}; var mutex = args.mutex || {}; var pdfEscape = mutex.pdfEscape; var activeFontKey = mutex.activeFontKey; var fonts = mutex.fonts; var key = activeFontKey; var str = "", s = 0, cmapConfirm; var strText = ""; var encoding = fonts[key].encoding; if (fonts[key].encoding !== "Identity-H") { return { text: text, x: x, y: y, options: options, mutex: mutex }; } strText = text; key = activeFontKey; if (Array.isArray(text)) { strText = text[0]; } for (s = 0; s < strText.length; s += 1) { if (fonts[key].metadata.hasOwnProperty("cmap")) { cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)]; /* if (Object.prototype.toString.call(text) === '[object Array]') { var i = 0; // for (i = 0; i < text.length; i += 1) { if (Object.prototype.toString.call(text[s]) === '[object Array]') { cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s][0].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id } else { } //} } else { cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id }*/ } if (!cmapConfirm) { if ( strText[s].charCodeAt(0) < 256 && fonts[key].metadata.hasOwnProperty("Unicode") ) { str += strText[s]; } else { str += ""; } } else { str += strText[s]; } } var result = ""; if (parseInt(key.slice(1)) < 14 || encoding === "WinAnsiEncoding") { //For the default 13 font result = pdfEscape(str, key) .split("") .map(function(cv) { return cv.charCodeAt(0).toString(16); }) .join(""); } else if (encoding === "Identity-H") { result = pdfEscape16(str, fonts[key]); } mutex.isHex = true; return { text: result, x: x, y: y, options: options, mutex: mutex }; }; var utf8EscapeFunction = function(parms) { var text = parms.text || "", x = parms.x, y = parms.y, options = parms.options, mutex = parms.mutex; var tmpText = []; var args = { text: text, x: x, y: y, options: options, mutex: mutex }; if (Array.isArray(text)) { var i = 0; for (i = 0; i < text.length; i += 1) { if (Array.isArray(text[i])) { if (text[i].length === 3) { tmpText.push([ utf8TextFunction(Object.assign({}, args, { text: text[i][0] })) .text, text[i][1], text[i][2] ]); } else { tmpText.push( utf8TextFunction(Object.assign({}, args, { text: text[i] })).text ); } } else { tmpText.push( utf8TextFunction(Object.assign({}, args, { text: text[i] })).text ); } } parms.text = tmpText; } else { parms.text = utf8TextFunction( Object.assign({}, args, { text: text }) ).text; } }; jsPDFAPI.events.push(["postProcessText", utf8EscapeFunction]); })(jsPDF);