resume in _fragment
parent
7f12b5f533
commit
74f90dd9e2
@ -0,0 +1,133 @@
|
||||
// Generated by CoffeeScript 1.12.5
|
||||
(function() {
|
||||
module.exports = {
|
||||
annotate: function(x, y, w, h, options) {
|
||||
var key, ref, val;
|
||||
options.Type = 'Annot';
|
||||
options.Rect = this._convertRect(x, y, w, h);
|
||||
options.Border = [0, 0, 0];
|
||||
if (options.Subtype !== 'Link') {
|
||||
if (options.C == null) {
|
||||
options.C = this._normalizeColor(options.color || [0, 0, 0]);
|
||||
}
|
||||
}
|
||||
delete options.color;
|
||||
if (typeof options.Dest === 'string') {
|
||||
options.Dest = new String(options.Dest);
|
||||
}
|
||||
for (key in options) {
|
||||
val = options[key];
|
||||
options[key[0].toUpperCase() + key.slice(1)] = val;
|
||||
}
|
||||
ref = this.ref(options);
|
||||
this.page.annotations.push(ref);
|
||||
ref.end();
|
||||
return this;
|
||||
},
|
||||
note: function(x, y, w, h, contents, options) {
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
options.Subtype = 'Text';
|
||||
options.Contents = new String(contents);
|
||||
options.Name = 'Comment';
|
||||
if (options.color == null) {
|
||||
options.color = [243, 223, 92];
|
||||
}
|
||||
return this.annotate(x, y, w, h, options);
|
||||
},
|
||||
link: function(x, y, w, h, url, options) {
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
options.Subtype = 'Link';
|
||||
options.A = this.ref({
|
||||
S: 'URI',
|
||||
URI: new String(url)
|
||||
});
|
||||
options.A.end();
|
||||
return this.annotate(x, y, w, h, options);
|
||||
},
|
||||
_markup: function(x, y, w, h, options) {
|
||||
var ref1, x1, x2, y1, y2;
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
ref1 = this._convertRect(x, y, w, h), x1 = ref1[0], y1 = ref1[1], x2 = ref1[2], y2 = ref1[3];
|
||||
options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1];
|
||||
options.Contents = new String;
|
||||
return this.annotate(x, y, w, h, options);
|
||||
},
|
||||
highlight: function(x, y, w, h, options) {
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
options.Subtype = 'Highlight';
|
||||
if (options.color == null) {
|
||||
options.color = [241, 238, 148];
|
||||
}
|
||||
return this._markup(x, y, w, h, options);
|
||||
},
|
||||
underline: function(x, y, w, h, options) {
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
options.Subtype = 'Underline';
|
||||
return this._markup(x, y, w, h, options);
|
||||
},
|
||||
strike: function(x, y, w, h, options) {
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
options.Subtype = 'StrikeOut';
|
||||
return this._markup(x, y, w, h, options);
|
||||
},
|
||||
lineAnnotation: function(x1, y1, x2, y2, options) {
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
options.Subtype = 'Line';
|
||||
options.Contents = new String;
|
||||
options.L = [x1, this.page.height - y1, x2, this.page.height - y2];
|
||||
return this.annotate(x1, y1, x2, y2, options);
|
||||
},
|
||||
rectAnnotation: function(x, y, w, h, options) {
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
options.Subtype = 'Square';
|
||||
options.Contents = new String;
|
||||
return this.annotate(x, y, w, h, options);
|
||||
},
|
||||
ellipseAnnotation: function(x, y, w, h, options) {
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
options.Subtype = 'Circle';
|
||||
options.Contents = new String;
|
||||
return this.annotate(x, y, w, h, options);
|
||||
},
|
||||
textAnnotation: function(x, y, w, h, text, options) {
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
options.Subtype = 'FreeText';
|
||||
options.Contents = new String(text);
|
||||
options.DA = new String;
|
||||
return this.annotate(x, y, w, h, options);
|
||||
},
|
||||
_convertRect: function(x1, y1, w, h) {
|
||||
var m0, m1, m2, m3, m4, m5, ref1, x2, y2;
|
||||
y2 = y1;
|
||||
y1 += h;
|
||||
x2 = x1 + w;
|
||||
ref1 = this._ctm, m0 = ref1[0], m1 = ref1[1], m2 = ref1[2], m3 = ref1[3], m4 = ref1[4], m5 = ref1[5];
|
||||
x1 = m0 * x1 + m2 * y1 + m4;
|
||||
y1 = m1 * x1 + m3 * y1 + m5;
|
||||
x2 = m0 * x2 + m2 * y2 + m4;
|
||||
y2 = m1 * x2 + m3 * y2 + m5;
|
||||
return [x1, y1, x2, y2];
|
||||
}
|
||||
};
|
||||
|
||||
}).call(this);
|
@ -0,0 +1,69 @@
|
||||
// Generated by CoffeeScript 1.12.5
|
||||
(function() {
|
||||
var PDFFont;
|
||||
|
||||
PDFFont = require('../font');
|
||||
|
||||
module.exports = {
|
||||
initFonts: function() {
|
||||
this._fontFamilies = {};
|
||||
this._fontCount = 0;
|
||||
this._fontSize = 12;
|
||||
this._font = null;
|
||||
this._registeredFonts = {};
|
||||
return this.font('Helvetica');
|
||||
},
|
||||
font: function(src, family, size) {
|
||||
var cacheKey, font, id, ref;
|
||||
if (typeof family === 'number') {
|
||||
size = family;
|
||||
family = null;
|
||||
}
|
||||
if (typeof src === 'string' && this._registeredFonts[src]) {
|
||||
cacheKey = src;
|
||||
ref = this._registeredFonts[src], src = ref.src, family = ref.family;
|
||||
} else {
|
||||
cacheKey = family || src;
|
||||
if (typeof cacheKey !== 'string') {
|
||||
cacheKey = null;
|
||||
}
|
||||
}
|
||||
if (size != null) {
|
||||
this.fontSize(size);
|
||||
}
|
||||
if (font = this._fontFamilies[cacheKey]) {
|
||||
this._font = font;
|
||||
return this;
|
||||
}
|
||||
id = 'F' + (++this._fontCount);
|
||||
this._font = PDFFont.open(this, src, family, id);
|
||||
if (font = this._fontFamilies[this._font.name]) {
|
||||
this._font = font;
|
||||
return this;
|
||||
}
|
||||
if (cacheKey) {
|
||||
this._fontFamilies[cacheKey] = this._font;
|
||||
}
|
||||
this._fontFamilies[this._font.name] = this._font;
|
||||
return this;
|
||||
},
|
||||
fontSize: function(_fontSize) {
|
||||
this._fontSize = _fontSize;
|
||||
return this;
|
||||
},
|
||||
currentLineHeight: function(includeGap) {
|
||||
if (includeGap == null) {
|
||||
includeGap = false;
|
||||
}
|
||||
return this._font.lineHeight(this._fontSize, includeGap);
|
||||
},
|
||||
registerFont: function(name, src, family) {
|
||||
this._registeredFonts[name] = {
|
||||
src: src,
|
||||
family: family
|
||||
};
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
}).call(this);
|
@ -0,0 +1,111 @@
|
||||
// Generated by CoffeeScript 1.12.5
|
||||
(function() {
|
||||
var PDFImage;
|
||||
|
||||
PDFImage = require('../image');
|
||||
|
||||
module.exports = {
|
||||
initImages: function() {
|
||||
this._imageRegistry = {};
|
||||
return this._imageCount = 0;
|
||||
},
|
||||
image: function(src, x, y, options) {
|
||||
var base, bh, bp, bw, h, hp, image, ip, name, ref, ref1, ref2, ref3, w, wp;
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
if (typeof x === 'object') {
|
||||
options = x;
|
||||
x = null;
|
||||
}
|
||||
x = (ref = x != null ? x : options.x) != null ? ref : this.x;
|
||||
y = (ref1 = y != null ? y : options.y) != null ? ref1 : this.y;
|
||||
if (typeof src === 'string') {
|
||||
image = this._imageRegistry[src];
|
||||
}
|
||||
if (!image) {
|
||||
if (src.width && src.height) {
|
||||
image = src;
|
||||
} else {
|
||||
image = this.openImage(src);
|
||||
}
|
||||
}
|
||||
if (!image.obj) {
|
||||
image.embed(this);
|
||||
}
|
||||
if ((base = this.page.xobjects)[name = image.label] == null) {
|
||||
base[name] = image.obj;
|
||||
}
|
||||
w = options.width || image.width;
|
||||
h = options.height || image.height;
|
||||
if (options.width && !options.height) {
|
||||
wp = w / image.width;
|
||||
w = image.width * wp;
|
||||
h = image.height * wp;
|
||||
} else if (options.height && !options.width) {
|
||||
hp = h / image.height;
|
||||
w = image.width * hp;
|
||||
h = image.height * hp;
|
||||
} else if (options.scale) {
|
||||
w = image.width * options.scale;
|
||||
h = image.height * options.scale;
|
||||
} else if (options.fit) {
|
||||
ref2 = options.fit, bw = ref2[0], bh = ref2[1];
|
||||
bp = bw / bh;
|
||||
ip = image.width / image.height;
|
||||
if (ip > bp) {
|
||||
w = bw;
|
||||
h = bw / ip;
|
||||
} else {
|
||||
h = bh;
|
||||
w = bh * ip;
|
||||
}
|
||||
} else if (options.cover) {
|
||||
ref3 = options.cover, bw = ref3[0], bh = ref3[1];
|
||||
bp = bw / bh;
|
||||
ip = image.width / image.height;
|
||||
if (ip > bp) {
|
||||
h = bh;
|
||||
w = bh * ip;
|
||||
} else {
|
||||
w = bw;
|
||||
h = bw / ip;
|
||||
}
|
||||
}
|
||||
if (options.fit || options.cover) {
|
||||
if (options.align === 'center') {
|
||||
x = x + bw / 2 - w / 2;
|
||||
} else if (options.align === 'right') {
|
||||
x = x + bw - w;
|
||||
}
|
||||
if (options.valign === 'center') {
|
||||
y = y + bh / 2 - h / 2;
|
||||
} else if (options.valign === 'bottom') {
|
||||
y = y + bh - h;
|
||||
}
|
||||
}
|
||||
if (this.y === y) {
|
||||
this.y += h;
|
||||
}
|
||||
this.save();
|
||||
this.transform(w, 0, 0, -h, x, y + h);
|
||||
this.addContent("/" + image.label + " Do");
|
||||
this.restore();
|
||||
return this;
|
||||
},
|
||||
openImage: function(src) {
|
||||
var image;
|
||||
if (typeof src === 'string') {
|
||||
image = this._imageRegistry[src];
|
||||
}
|
||||
if (!image) {
|
||||
image = PDFImage.open(src, 'I' + (++this._imageCount));
|
||||
if (typeof src === 'string') {
|
||||
this._imageRegistry[src] = image;
|
||||
}
|
||||
}
|
||||
return image;
|
||||
}
|
||||
};
|
||||
|
||||
}).call(this);
|
@ -0,0 +1,338 @@
|
||||
// Generated by CoffeeScript 1.12.5
|
||||
(function() {
|
||||
var LineWrapper, number;
|
||||
|
||||
LineWrapper = require('../line_wrapper');
|
||||
|
||||
number = require('../object').number;
|
||||
|
||||
module.exports = {
|
||||
initText: function() {
|
||||
this.x = 0;
|
||||
this.y = 0;
|
||||
return this._lineGap = 0;
|
||||
},
|
||||
lineGap: function(_lineGap) {
|
||||
this._lineGap = _lineGap;
|
||||
return this;
|
||||
},
|
||||
moveDown: function(lines) {
|
||||
if (lines == null) {
|
||||
lines = 1;
|
||||
}
|
||||
this.y += this.currentLineHeight(true) * lines + this._lineGap;
|
||||
return this;
|
||||
},
|
||||
moveUp: function(lines) {
|
||||
if (lines == null) {
|
||||
lines = 1;
|
||||
}
|
||||
this.y -= this.currentLineHeight(true) * lines + this._lineGap;
|
||||
return this;
|
||||
},
|
||||
_text: function(text, x, y, options, lineCallback) {
|
||||
var j, len, line, ref, wrapper;
|
||||
options = this._initOptions(x, y, options);
|
||||
text = '' + text;
|
||||
if (options.wordSpacing) {
|
||||
text = text.replace(/\s{2,}/g, ' ');
|
||||
}
|
||||
if (options.width) {
|
||||
wrapper = this._wrapper;
|
||||
if (!wrapper) {
|
||||
wrapper = new LineWrapper(this, options);
|
||||
wrapper.on('line', lineCallback);
|
||||
}
|
||||
this._wrapper = options.continued ? wrapper : null;
|
||||
this._textOptions = options.continued ? options : null;
|
||||
wrapper.wrap(text, options);
|
||||
} else {
|
||||
ref = text.split('\n');
|
||||
for (j = 0, len = ref.length; j < len; j++) {
|
||||
line = ref[j];
|
||||
lineCallback(line, options);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
},
|
||||
text: function(text, x, y, options) {
|
||||
return this._text(text, x, y, options, this._line.bind(this));
|
||||
},
|
||||
widthOfString: function(string, options) {
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
return this._font.widthOfString(string, this._fontSize, options.features) + (options.characterSpacing || 0) * (string.length - 1);
|
||||
},
|
||||
heightOfString: function(text, options) {
|
||||
var height, lineGap, ref, x, y;
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
ref = this, x = ref.x, y = ref.y;
|
||||
options = this._initOptions(options);
|
||||
options.height = 2e308;
|
||||
lineGap = options.lineGap || this._lineGap || 0;
|
||||
this._text(text, this.x, this.y, options, (function(_this) {
|
||||
return function(line, options) {
|
||||
return _this.y += _this.currentLineHeight(true) + lineGap;
|
||||
};
|
||||
})(this));
|
||||
height = this.y - y;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
return height;
|
||||
},
|
||||
list: function(list, x, y, options, wrapper) {
|
||||
var flatten, i, indent, itemIndent, items, level, levels, midLine, r;
|
||||
options = this._initOptions(x, y, options);
|
||||
midLine = Math.round((this._font.ascender / 1000 * this._fontSize) / 2);
|
||||
r = options.bulletRadius || Math.round((this._font.ascender / 1000 * this._fontSize) / 3);
|
||||
indent = options.textIndent || r * 5;
|
||||
itemIndent = options.bulletIndent || r * 8;
|
||||
level = 1;
|
||||
items = [];
|
||||
levels = [];
|
||||
flatten = function(list) {
|
||||
var i, item, j, len, results;
|
||||
results = [];
|
||||
for (i = j = 0, len = list.length; j < len; i = ++j) {
|
||||
item = list[i];
|
||||
if (Array.isArray(item)) {
|
||||
level++;
|
||||
flatten(item);
|
||||
results.push(level--);
|
||||
} else {
|
||||
items.push(item);
|
||||
results.push(levels.push(level));
|
||||
}
|
||||
}
|
||||
return results;
|
||||
};
|
||||
flatten(list);
|
||||
wrapper = new LineWrapper(this, options);
|
||||
wrapper.on('line', this._line.bind(this));
|
||||
level = 1;
|
||||
i = 0;
|
||||
wrapper.on('firstLine', (function(_this) {
|
||||
return function() {
|
||||
var diff, l;
|
||||
if ((l = levels[i++]) !== level) {
|
||||
diff = itemIndent * (l - level);
|
||||
_this.x += diff;
|
||||
wrapper.lineWidth -= diff;
|
||||
level = l;
|
||||
}
|
||||
_this.circle(_this.x - indent + r, _this.y + midLine, r);
|
||||
return _this.fill();
|
||||
};
|
||||
})(this));
|
||||
wrapper.on('sectionStart', (function(_this) {
|
||||
return function() {
|
||||
var pos;
|
||||
pos = indent + itemIndent * (level - 1);
|
||||
_this.x += pos;
|
||||
return wrapper.lineWidth -= pos;
|
||||
};
|
||||
})(this));
|
||||
wrapper.on('sectionEnd', (function(_this) {
|
||||
return function() {
|
||||
var pos;
|
||||
pos = indent + itemIndent * (level - 1);
|
||||
_this.x -= pos;
|
||||
return wrapper.lineWidth += pos;
|
||||
};
|
||||
})(this));
|
||||
wrapper.wrap(items.join('\n'), options);
|
||||
return this;
|
||||
},
|
||||
_initOptions: function(x, y, options) {
|
||||
var key, margins, ref, val;
|
||||
if (x == null) {
|
||||
x = {};
|
||||
}
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
if (typeof x === 'object') {
|
||||
options = x;
|
||||
x = null;
|
||||
}
|
||||
options = (function() {
|
||||
var k, opts, v;
|
||||
opts = {};
|
||||
for (k in options) {
|
||||
v = options[k];
|
||||
opts[k] = v;
|
||||
}
|
||||
return opts;
|
||||
})();
|
||||
if (this._textOptions) {
|
||||
ref = this._textOptions;
|
||||
for (key in ref) {
|
||||
val = ref[key];
|
||||
if (key !== 'continued') {
|
||||
if (options[key] == null) {
|
||||
options[key] = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (x != null) {
|
||||
this.x = x;
|
||||
}
|
||||
if (y != null) {
|
||||
this.y = y;
|
||||
}
|
||||
if (options.lineBreak !== false) {
|
||||
margins = this.page.margins;
|
||||
if (options.width == null) {
|
||||
options.width = this.page.width - this.x - margins.right;
|
||||
}
|
||||
}
|
||||
options.columns || (options.columns = 0);
|
||||
if (options.columnGap == null) {
|
||||
options.columnGap = 18;
|
||||
}
|
||||
return options;
|
||||
},
|
||||
_line: function(text, options, wrapper) {
|
||||
var lineGap;
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
this._fragment(text, this.x, this.y, options);
|
||||
lineGap = options.lineGap || this._lineGap || 0;
|
||||
if (!wrapper) {
|
||||
return this.x += this.widthOfString(text);
|
||||
} else {
|
||||
return this.y += this.currentLineHeight(true) + lineGap;
|
||||
}
|
||||
},
|
||||
_fragment: function(text, x, y, options) {
|
||||
var addSegment, align, base, characterSpacing, commands, d, encoded, encodedWord, flush, hadOffset, i, j, last, len, len1, lineWidth, lineY, m, mode, name, pos, positions, positionsWord, ref, ref1, renderedWidth, scale, spaceWidth, textWidth, word, wordSpacing, words;
|
||||
text = ('' + text).replace(/\n/g, '');
|
||||
if (text.length === 0) {
|
||||
return;
|
||||
}
|
||||
align = options.align || 'left';
|
||||
wordSpacing = options.wordSpacing || 0;
|
||||
characterSpacing = options.characterSpacing || 0;
|
||||
if (options.width) {
|
||||
switch (align) {
|
||||
case 'right':
|
||||
textWidth = this.widthOfString(text.replace(/\s+$/, ''), options);
|
||||
x += options.lineWidth - textWidth;
|
||||
break;
|
||||
case 'center':
|
||||
x += options.lineWidth / 2 - options.textWidth / 2;
|
||||
break;
|
||||
case 'justify':
|
||||
words = text.trim().split(/\s+/);
|
||||
textWidth = this.widthOfString(text.replace(/\s+/g, ''), options);
|
||||
spaceWidth = this.widthOfString(' ') + characterSpacing;
|
||||
wordSpacing = Math.max(0, (options.lineWidth - textWidth) / Math.max(1, words.length - 1) - spaceWidth);
|
||||
}
|
||||
}
|
||||
renderedWidth = options.textWidth + (wordSpacing * (options.wordCount - 1)) + (characterSpacing * (text.length - 1));
|
||||
if (options.link) {
|
||||
this.link(x, y, renderedWidth, this.currentLineHeight(), options.link);
|
||||
}
|
||||
if (options.underline || options.strike) {
|
||||
this.save();
|
||||
if (!options.stroke) {
|
||||
this.strokeColor.apply(this, this._fillColor);
|
||||
}
|
||||
lineWidth = this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);
|
||||
this.lineWidth(lineWidth);
|
||||
d = options.underline ? 1 : 2;
|
||||
lineY = y + this.currentLineHeight() / d;
|
||||
if (options.underline) {
|
||||
lineY -= lineWidth;
|
||||
}
|
||||
this.moveTo(x, lineY);
|
||||
this.lineTo(x + renderedWidth, lineY);
|
||||
this.stroke();
|
||||
this.restore();
|
||||
}
|
||||
this.save();
|
||||
this.transform(1, 0, 0, -1, 0, this.page.height);
|
||||
y = this.page.height - y - (this._font.ascender / 1000 * this._fontSize);
|
||||
if ((base = this.page.fonts)[name = this._font.id] == null) {
|
||||
base[name] = this._font.ref();
|
||||
}
|
||||
this.addContent("BT");
|
||||
this.addContent("1 0 0 1 " + (number(x)) + " " + (number(y)) + " Tm");
|
||||
this.addContent("/" + this._font.id + " " + (number(this._fontSize)) + " Tf");
|
||||
mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0;
|
||||
if (mode) {
|
||||
this.addContent(mode + " Tr");
|
||||
}
|
||||
if (characterSpacing) {
|
||||
this.addContent((number(characterSpacing)) + " Tc");
|
||||
}
|
||||
if (wordSpacing) {
|
||||
words = text.trim().split(/\s+/);
|
||||
wordSpacing += this.widthOfString(' ') + characterSpacing;
|
||||
wordSpacing *= 1000 / this._fontSize;
|
||||
encoded = [];
|
||||
positions = [];
|
||||
for (j = 0, len = words.length; j < len; j++) {
|
||||
word = words[j];
|
||||
ref = this._font.encode(word, options.features), encodedWord = ref[0], positionsWord = ref[1];
|
||||
encoded.push.apply(encoded, encodedWord);
|
||||
positions.push.apply(positions, positionsWord);
|
||||
positions[positions.length - 1].xAdvance += wordSpacing;
|
||||
}
|
||||
} else {
|
||||
ref1 = this._font.encode(text, options.features), encoded = ref1[0], positions = ref1[1];
|
||||
}
|
||||
scale = this._fontSize / 1000;
|
||||
commands = [];
|
||||
last = 0;
|
||||
hadOffset = false;
|
||||
addSegment = (function(_this) {
|
||||
return function(cur) {
|
||||
var advance, hex;
|
||||
if (last < cur) {
|
||||
hex = encoded.slice(last, cur).join('');
|
||||
advance = positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth;
|
||||
commands.push("<" + hex + "> " + (number(-advance)));
|
||||
}
|
||||
return last = cur;
|
||||
};
|
||||
})(this);
|
||||
flush = (function(_this) {
|
||||
return function(i) {
|
||||
addSegment(i);
|
||||
if (commands.length > 0) {
|
||||
_this.addContent("[" + (commands.join(' ')) + "] TJ");
|
||||
return commands.length = 0;
|
||||
}
|
||||
};
|
||||
})(this);
|
||||
for (i = m = 0, len1 = positions.length; m < len1; i = ++m) {
|
||||
pos = positions[i];
|
||||
if (pos.xOffset || pos.yOffset) {
|
||||
flush(i);
|
||||
this.addContent("1 0 0 1 " + (number(x + pos.xOffset * scale)) + " " + (number(y + pos.yOffset * scale)) + " Tm");
|
||||
flush(i + 1);
|
||||
hadOffset = true;
|
||||
} else {
|
||||
if (hadOffset) {
|
||||
this.addContent("1 0 0 1 " + (number(x)) + " " + (number(y)) + " Tm");
|
||||
hadOffset = false;
|
||||
}
|
||||
if (pos.xAdvance - pos.advanceWidth !== 0) {
|
||||
addSegment(i + 1);
|
||||
}
|
||||
}
|
||||
x += pos.xAdvance * scale;
|
||||
}
|
||||
flush(i);
|
||||
this.addContent("ET");
|
||||
return this.restore();
|
||||
}
|
||||
};
|
||||
|
||||
}).call(this);
|
Loading…
Reference in New Issue