UNPKG

pdf-lib

Version:

Create and modify PDF files with JavaScript

133 lines 5.27 kB
import { __spreadArrays } from "tslib"; import { setFillingColor, setStrokingColor } from "./colors"; import { asNumber } from "./objects"; import { appendBezierCurve, beginText, closePath, drawObject, endText, fill, fillAndStroke, lineTo, moveTo, nextLine, popGraphicsState, pushGraphicsState, rotateAndSkewTextRadiansAndTranslate, rotateRadians, scale, setFontAndSize, setLineHeight, setLineWidth, showText, skewRadians, stroke, translate, } from "./operators"; import { toRadians } from "./rotations"; import { svgPathToOperators } from "./svgPath"; export var drawText = function (line, options) { return [ beginText(), setFillingColor(options.color), setFontAndSize(options.font, options.size), rotateAndSkewTextRadiansAndTranslate(toRadians(options.rotate), toRadians(options.xSkew), toRadians(options.ySkew), options.x, options.y), showText(line), endText(), ]; }; export var drawLinesOfText = function (lines, options) { var operators = [ beginText(), setFillingColor(options.color), setFontAndSize(options.font, options.size), setLineHeight(options.lineHeight), rotateAndSkewTextRadiansAndTranslate(toRadians(options.rotate), toRadians(options.xSkew), toRadians(options.ySkew), options.x, options.y), ]; for (var idx = 0, len = lines.length; idx < len; idx++) { operators.push(showText(lines[idx]), nextLine()); } operators.push(endText()); return operators; }; export var drawImage = function (name, options) { return [ pushGraphicsState(), translate(options.x, options.y), rotateRadians(toRadians(options.rotate)), scale(options.width, options.height), skewRadians(toRadians(options.xSkew), toRadians(options.ySkew)), drawObject(name), popGraphicsState(), ]; }; export var drawLine = function (options) { return [ pushGraphicsState(), options.color && setStrokingColor(options.color), setLineWidth(options.thickness), moveTo(options.start.x, options.start.y), lineTo(options.end.x, options.end.y), stroke(), popGraphicsState(), ].filter(Boolean); }; export var drawRectangle = function (options) { return [ pushGraphicsState(), options.color && setFillingColor(options.color), options.borderColor && setStrokingColor(options.borderColor), setLineWidth(options.borderWidth), translate(options.x, options.y), rotateRadians(toRadians(options.rotate)), skewRadians(toRadians(options.xSkew), toRadians(options.ySkew)), moveTo(0, 0), lineTo(0, options.height), lineTo(options.width, options.height), lineTo(options.width, 0), closePath(), // prettier-ignore options.color && options.borderWidth ? fillAndStroke() : options.color ? fill() : options.borderColor ? stroke() : closePath(), popGraphicsState(), ].filter(Boolean); }; var KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0); export var drawEllipsePath = function (config) { var x = asNumber(config.x); var y = asNumber(config.y); var xScale = asNumber(config.xScale); var yScale = asNumber(config.yScale); x -= xScale; y -= yScale; var ox = xScale * KAPPA; var oy = yScale * KAPPA; var xe = x + xScale * 2; var ye = y + yScale * 2; var xm = x + xScale; var ym = y + yScale; return [ pushGraphicsState(), moveTo(x, ym), appendBezierCurve(x, ym - oy, xm - ox, y, xm, y), appendBezierCurve(xm + ox, y, xe, ym - oy, xe, ym), appendBezierCurve(xe, ym + oy, xm + ox, ye, xm, ye), appendBezierCurve(xm - ox, ye, x, ym + oy, x, ym), popGraphicsState(), ]; }; export var drawEllipse = function (options) { return __spreadArrays([ pushGraphicsState(), options.color && setFillingColor(options.color), options.borderColor && setStrokingColor(options.borderColor), setLineWidth(options.borderWidth) ], drawEllipsePath({ x: options.x, y: options.y, xScale: options.xScale, yScale: options.yScale, }), [ // prettier-ignore options.color && options.borderWidth ? fillAndStroke() : options.color ? fill() : options.borderColor ? stroke() : closePath(), popGraphicsState(), ]).filter(Boolean); }; export var drawSvgPath = function (path, options) { return __spreadArrays([ pushGraphicsState(), translate(options.x, options.y), // SVG path Y axis is opposite pdf-lib's options.scale ? scale(options.scale, -options.scale) : scale(1, -1), options.color && setFillingColor(options.color), options.borderColor && setStrokingColor(options.borderColor), options.borderWidth && setLineWidth(options.borderWidth) ], svgPathToOperators(path), [ // prettier-ignore options.color && options.borderWidth ? fillAndStroke() : options.color ? fill() : options.borderColor ? stroke() : closePath(), popGraphicsState(), ]).filter(Boolean); }; //# sourceMappingURL=operations.js.map