UNPKG

@pdfme/pdf-lib

Version:

Create and modify PDF files with JavaScript

176 lines (163 loc) 3.84 kB
import { Color } from './colors'; import PDFFont from './PDFFont'; import { Rotation } from './rotations'; import { FillRule, LineCapStyle } from './operators'; import type { Space, TransformationMatrix } from '../types'; interface SvgOptions { matrix?: TransformationMatrix; clipSpaces?: Space[]; } export enum BlendMode { Normal = 'Normal', Multiply = 'Multiply', Screen = 'Screen', Overlay = 'Overlay', Darken = 'Darken', Lighten = 'Lighten', ColorDodge = 'ColorDodge', ColorBurn = 'ColorBurn', HardLight = 'HardLight', SoftLight = 'SoftLight', Difference = 'Difference', Exclusion = 'Exclusion', } export interface PDFPageDrawTextOptions extends SvgOptions { color?: Color; opacity?: number; blendMode?: BlendMode; font?: PDFFont; size?: number; rotate?: Rotation; xSkew?: Rotation; ySkew?: Rotation; x?: number; y?: number; lineHeight?: number; maxWidth?: number; wordBreaks?: string[]; } export interface PDFPageDrawImageOptions extends SvgOptions { x?: number; y?: number; width?: number; height?: number; rotate?: Rotation; xSkew?: Rotation; ySkew?: Rotation; opacity?: number; blendMode?: BlendMode; } export interface PDFPageDrawPageOptions { x?: number; y?: number; xScale?: number; yScale?: number; width?: number; height?: number; rotate?: Rotation; xSkew?: Rotation; ySkew?: Rotation; opacity?: number; blendMode?: BlendMode; } export interface PDFPageDrawSVGOptions extends SvgOptions { x?: number; y?: number; scale?: number; rotate?: Rotation; borderWidth?: number; color?: Color; opacity?: number; borderColor?: Color; borderOpacity?: number; borderDashArray?: number[]; borderDashPhase?: number; borderLineCap?: LineCapStyle; blendMode?: BlendMode; fillRule?: FillRule; } export interface PDFPageDrawLineOptions extends SvgOptions { start: { x: number; y: number }; end: { x: number; y: number }; thickness?: number; color?: Color; opacity?: number; lineCap?: LineCapStyle; dashArray?: number[]; dashPhase?: number; blendMode?: BlendMode; } export interface PDFPageDrawRectangleOptions extends SvgOptions { x?: number; y?: number; width?: number; height?: number; rotate?: Rotation; xSkew?: Rotation; ySkew?: Rotation; borderWidth?: number; color?: Color; opacity?: number; borderColor?: Color; borderOpacity?: number; borderDashArray?: number[]; borderDashPhase?: number; borderLineCap?: LineCapStyle; blendMode?: BlendMode; radius?: number; } export interface PDFPageDrawSquareOptions extends SvgOptions { x?: number; y?: number; size?: number; rotate?: Rotation; xSkew?: Rotation; ySkew?: Rotation; borderWidth?: number; color?: Color; opacity?: number; borderColor?: Color; borderOpacity?: number; borderDashArray?: number[]; borderDashPhase?: number; borderLineCap?: LineCapStyle; blendMode?: BlendMode; } export interface PDFPageDrawEllipseOptions extends SvgOptions { x?: number; y?: number; xScale?: number; yScale?: number; rotate?: Rotation; color?: Color; opacity?: number; borderColor?: Color; borderOpacity?: number; borderWidth?: number; borderDashArray?: number[]; borderDashPhase?: number; borderLineCap?: LineCapStyle; blendMode?: BlendMode; } export interface PDFPageDrawCircleOptions extends SvgOptions { x?: number; y?: number; size?: number; color?: Color; opacity?: number; borderColor?: Color; borderOpacity?: number; borderWidth?: number; borderDashArray?: number[]; borderDashPhase?: number; borderLineCap?: LineCapStyle; blendMode?: BlendMode; } export interface PDFPageDrawSVGElementOptions { x?: number; y?: number; width?: number; height?: number; fontSize?: number; fonts?: { [fontName: string]: PDFFont }; }