{"version":3,"file":"ngx-pdfjs.mjs","sources":["../../../projects/pdf/classes/PdfUtil.ts","../../../projects/pdf/classes/PdfOperatorTransforms.ts","../../../projects/pdf/classes/PdfOperatorSelection.ts","../../../projects/pdf/classes/PdfOperator.ts","../../../projects/pdf/classes/PdfOperatorList.ts","../../../projects/pdf/classes/PdfTextEvaluator.ts","../../../projects/pdf/classes/PdfPage.ts","../../../projects/pdf/classes/PdfDocument.ts","../../../projects/pdf/pdf.service.ts","../../../projects/pdf/pdf.module.ts","../../../projects/pdf/ngx-pdfjs.ts"],"sourcesContent":["import { capitalCase, paramCase } from 'change-case'\n\nexport interface PdfImage {\n  kind: 1 | 2 | 3\n  data: Uint8ClampedArray\n}\n\nexport function transformRgbToRgba(data) {\n  const length = data.length / 3 * 4\n  const result = new Uint8ClampedArray(length)\n  for (let i = 0; i < data.length; i += 3) {\n    const j = i / 3 * 4\n    result[j + 0] = data[i + 0]\n    result[j + 1] = data[i + 1]\n    result[j + 2] = data[i + 2]\n    result[j + 3] = 255\n  }\n  return result\n}\n\nexport function transformGrayscaleToRgba(data) {\n  const length = data.length * 4\n  const result = new Uint8ClampedArray(length)\n  for (let i = 0; i < data.length; i += 1) {\n    const j = i * 4\n    result[j + 0] = data[i]\n    result[j + 1] = data[i]\n    result[j + 2] = data[i]\n    result[j + 3] = 255\n  }\n  return result\n}\n\nexport function transformImageToArray(image: PdfImage): Uint8ClampedArray {\n  if (image.kind === 1) {\n    return transformGrayscaleToRgba(image.data)\n  } else if (image.kind === 2) {\n    return transformRgbToRgba(image.data)\n  }\n  return image.data\n}\n\nexport function parseFontName(raw: string) {\n  const result = { raw, identifier: '', fontFamily: raw.replace(/^.+\\+/, ''), fontWeight: 'regular', fontStyle: 'normal' }\n  if (/-regular$/i.test(result.fontFamily)) {\n    result.fontFamily = result.fontFamily.replace(/-regular$/i, '')\n  }\n  if (/-bold$/i.test(result.fontFamily)) {\n    result.fontFamily = result.fontFamily.replace(/-bold$/i, '')\n    result.fontWeight = 'bold'\n  }\n  if (/-extrabold$/i.test(result.fontFamily)) {\n    result.fontFamily = result.fontFamily.replace(/-extrabold$/i, '')\n    result.fontWeight = 'bold'\n  }\n  if (/-black$/i.test(result.fontFamily)) {\n    result.fontFamily = result.fontFamily.replace(/-black$/i, '')\n    result.fontWeight = 'bold'\n  }\n  if (/-italic$/i.test(result.fontFamily)) {\n    result.fontFamily = result.fontFamily.replace(/-italic$/i, '')\n    result.fontStyle = 'italic'\n  }\n  if (/-oblique$/i.test(result.fontFamily)) {\n    result.fontFamily = result.fontFamily.replace(/-oblique$/i, '')\n    result.fontStyle = 'italic'\n  }\n  result.fontFamily = capitalCase(result.fontFamily)\n  result.identifier = paramCase(result.fontFamily)\n  return result\n}\n\nexport function rgbToHex([r, g, b]: number[]) {\n  const hex = [r, g, b].map((value) => value.toString(16).padStart(2, '0'))\n  return `#${hex.join('')}`\n}\n\nexport function hexToRgb(hex: string) {\n  const [, r, g, b] = hex.match(/^#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/)\n  return [r, g, b].map((value) => parseInt(value, 16))\n}\n","import { rgbToHex } from './PdfUtil'\n\nexport type SetGStateOperator = {\n  setLineWidth?: number,\n  setLineCap?: number,\n  setLineJoin?: number,\n  setMiterLimit?: number,\n  setDash?: number,\n  setRenderingIntent?: any,\n  setFlatness?: number,\n  setFont?: [string, number],\n  strokeAlpha?: number,\n  fillAlpha?: number,\n  globalCompositeOperation?: any\n}\nexport type PaintXObjectOperator = { objectId: string, width: number, height: number }\nexport type SetFontOperator = { objectId: string, size: number }\nexport type ShowTextOperator = { text: string, width: number, length: number }\nexport type MoveTextOperator = { left: number, bottom: number }\nexport type SetLeadingMoveTextOperator = { left: number, bottom: number }\n\nexport interface Operators {\n  transform: number[]\n  setGState: SetGStateOperator\n  paintXObject: PaintXObjectOperator\n  paintImageXObject: PaintXObjectOperator\n  paintJpegXObject: PaintXObjectOperator\n  showText: ShowTextOperator\n  setFillRGBColor: string\n  setFont: SetFontOperator\n  moveText: MoveTextOperator\n  setLeadingMoveText: SetLeadingMoveTextOperator\n  beginText: null\n  endText: null\n  setTextMatrix: number[]\n  setCharSpacing: number\n}\n\nexport function setGState([args]: [string, any][][]): SetGStateOperator {\n  const state = Object.fromEntries(args)\n  const result: SetGStateOperator = {}\n  if (state.LW) { result.setLineWidth = state.LW }\n  if (state.LC) { result.setLineCap = state.LC }\n  if (state.LJ) { result.setLineJoin = state.LJ }\n  if (state.ML) { result.setMiterLimit = state.ML }\n  if (state.D) { result.setDash = state.D }\n  if (state.RI) { result.setRenderingIntent = state.RI }\n  if (state.FL) { result.setFlatness = state.FL }\n  if (state.Font) { result.setFont = state.Font }\n  if (state.CA) { result.strokeAlpha = state.CA }\n  if (state.ca) { result.fillAlpha = state.ca }\n  if (state.BM) { result.globalCompositeOperation = state.BM }\n  return result\n}\n\nexport function paintImageXObject([objectId, width, height]: [string, number, number]): PaintXObjectOperator {\n  return { objectId, width, height }\n}\n\nexport function paintJpegXObject([objectId, width, height]: [string, number, number]): PaintXObjectOperator {\n  return { objectId, width, height }\n}\n\nexport function showText([items]: { unicode: string, width: number }[][]): ShowTextOperator {\n  const valid = items.filter((item) => typeof item !== 'number')\n  return {\n    text: valid.map(({ unicode }) => unicode).join(''),\n    width: valid.reduce((cur, { width }) => cur + width / 1000, 0),\n    length: valid.length\n  }\n}\n\nexport function setFillRGBColor(rgb: number[]): string {\n  return rgbToHex(rgb)\n}\n\nexport function setFont([objectId, size]: [string, number]): SetFontOperator {\n  return { objectId, size }\n}\n\nexport function moveText([left, bottom]: [number, number]): MoveTextOperator {\n  return { left, bottom }\n}\n\nexport function setLeadingMoveText([left, bottom]: [number, number]): MoveTextOperator {\n  return { left, bottom }\n}\n\nexport function setCharSpacing([value]: [number]): number {\n  return value\n}\n","import { PdfOperator, PdfOperatorFilter } from './PdfOperator'\nimport { PdfOperatorList } from './PdfOperatorList'\nimport * as PdfOperatorTransforms from './PdfOperatorTransforms'\n\nexport type PdfOperatorSelectionFn = (selection: PdfOperatorSelection) => void\n\nexport class PdfOperatorSelection {\n  public operators: PdfOperator[] = []\n\n  constructor(private list: PdfOperatorList) {}\n\n  add(operator: PdfOperator) {\n    this.operators.push(operator)\n    this.operators.sort((a, b) => a.index - b.index)\n    return this\n  }\n\n  remove(operator: PdfOperator) {\n    const index = this.operators.indexOf(operator)\n    if (index) { this.operators.splice(index, 1) }\n    return this\n  }\n\n  before(filter: PdfOperatorFilter | string) {\n    const operator = this.first.before(filter)\n    if (operator) { this.add(operator) }\n    return this\n  }\n\n  after(filter: PdfOperatorFilter | string) {\n    const operator = this.last.after(filter)\n    if (operator) { this.add(operator) }\n    return this\n  }\n\n  includes(operator: PdfOperator) {\n    return this.operators.includes(operator)\n  }\n\n  slice() {\n    return this.list.slice(this.first.index, this.last.index)\n  }\n\n  fill() {\n    for (const operator of this.slice()) {\n      if (!this.includes(operator)) {\n        this.add(operator)\n      }\n    }\n  }\n\n  extract<T extends object>() {\n    return this.operators.reduce<T>((obj, { fn, args }) => {\n      obj[fn] = PdfOperatorTransforms[fn] ? PdfOperatorTransforms[fn](args) : args\n      return obj\n    }, {} as T)\n  }\n\n  transform(): Partial<PdfOperatorTransforms.Operators>[] {\n    return this.operators.map(({ fn, args }) => {\n      return { [fn]: PdfOperatorTransforms[fn] ? PdfOperatorTransforms[fn](args) : args }\n    })\n  }\n\n  get first() {\n    return this.operators[0]\n  }\n\n  get last() {\n    return this.operators[this.operators.length - 1]\n  }\n\n  public debug() {\n    console.table(this.operators.map(({ fn, args }) => {\n      return { fn, args }\n    }))\n  }\n}","import { PdfOperatorList } from './PdfOperatorList'\nimport { PdfOperatorSelection, PdfOperatorSelectionFn } from './PdfOperatorSelection'\n\nexport type PdfOperatorFilter = (operator: PdfOperator) => boolean\n\nexport class PdfOperator {\n  constructor(private list: PdfOperatorList, public fn: string, public args: any[] = []) {}\n\n  get index() {\n    return this.list.indexOf(this)\n  }\n\n  get prev() {\n    return this.list.at(this.index - 1)\n  }\n\n  get next() {\n    return this.list.at(this.index + 1)\n  }\n\n  before(filter: PdfOperatorFilter | string) {\n    return this.list.before(this.index, filter)\n  }\n\n  after(filter: PdfOperatorFilter | string) {\n    return this.list.after(this.index, filter)\n  }\n\n  select(fn: PdfOperatorSelectionFn) {\n    const selection = new PdfOperatorSelection(this.list)\n    selection.add(this)\n    fn(selection)\n    return selection.extract()\n  }\n\n  serialize() {\n    return `[${this.fn}]`\n  }\n}\n","import md5 from 'md5'\nimport { OPS } from 'pdfjs-dist'\nimport { PDFOperatorList } from 'pdfjs-dist/types/display/api'\nimport { PdfOperator, PdfOperatorFilter } from './PdfOperator'\nimport { PdfOperatorSelection, PdfOperatorSelectionFn } from './PdfOperatorSelection'\n\nexport interface OPSLookup {\n  [key: number]: string\n}\n\nconst OPS_LOOKUP = Object.entries(OPS).reduce<OPSLookup>((obj: any, [key, value]: any) => { obj[value] = key; return obj }, {})\n\nfunction makeFilterFn(filter?: string | string[] | PdfOperatorFilter): PdfOperatorFilter {\n  if (!filter) {\n    return () => true\n  } else if (typeof filter === 'string') {\n    return ((operator: PdfOperator) => operator.fn === filter)\n  } else if (filter instanceof Array) {\n    return ((operator: PdfOperator) => filter.includes(operator.fn))\n  } else {\n    return filter\n  }\n}\n\nexport class PdfOperatorList {\n  public operators: PdfOperator[]\n\n  constructor({ fnArray, argsArray }: PDFOperatorList) {\n    this.operators = fnArray.map((value, index) => {\n      const fn = OPS_LOOKUP[value]\n      const args = argsArray[index]\n      return new PdfOperator(this, fn, args)\n    })\n  }\n\n  public find(filter: string | string[] | PdfOperatorFilter) {\n    return this.operators.find(makeFilterFn(filter))\n  }\n\n  public findAll(filter?: string | string[] | PdfOperatorFilter) {\n    return this.operators.filter(makeFilterFn(filter))\n  }\n\n  public get length() {\n    return this.operators.length\n  }\n\n  public indexOf(operator: PdfOperator) {\n    return this.operators.indexOf(operator)\n  }\n\n  public at(index: number) {\n    return this.operators[index]\n  }\n\n  public before(index: number, filter: string | string[] | PdfOperatorFilter) {\n    for (let i = index - 1; i >= 0; i -= 1) {\n      if (makeFilterFn(filter)(this.at(i))) { return this.at(i) }\n    }\n    return null\n  }\n\n  public after(index: number, filter: string | string[] | PdfOperatorFilter) {\n    for (let i = index + 1; i < this.length; i += 1) {\n      if (makeFilterFn(filter)(this.at(i))) { return this.at(i) }\n    }\n    return null\n  }\n\n  public slice(start: number, end?: number) {\n    return this.operators.slice(start, end)\n  }\n\n  public select(...operators: PdfOperator[]) {\n    const selection = new PdfOperatorSelection(this)\n    for (const operator of operators) {\n      if (operator != null) {\n        selection.add(operator)\n      }\n    }\n    return selection\n  }\n\n  public selectAll(filter?: string | string[] | PdfOperatorFilter, fn?: PdfOperatorSelectionFn) {\n    return this.findAll(filter).map((operator) => {\n      const selection = this.select(operator)\n      if (fn) { fn(selection) }\n      return selection\n    })\n  }\n\n  public debug() {\n    console.table(this.operators.map((operator) => {\n      const args = operator.args || []\n      return [operator.fn, ...args]\n    }))\n  }\n\n  get fingerprint(): string {\n    return md5(this.serialize())\n  }\n\n  public serialize() {\n    return this.operators.map((operator) => operator.serialize()).join('')\n  }\n}\n","import { PdfOperatorSelection } from './PdfOperatorSelection'\nimport { Operators } from './PdfOperatorTransforms'\nimport { BoundingBox, PdfPage } from './PdfPage'\nimport { parseFontName } from './PdfUtil'\n\nexport interface EvaluatorElement {\n  text?: string\n  textColor?: string\n  fontFamily?: string\n  fontWeight?: string\n  fontStyle?: string\n  fontSize?: number\n  boundingBox?: BoundingBox\n}\n\nexport class PdfTextEvaluator {\n  readonly elements: EvaluatorElement[] = []\n  private current: EvaluatorElement\n\n  private textColor?: string\n  private fontFamily?: string\n  private fontWeight?: string\n  private fontStyle?: string\n  private fontSize?: number\n\n  private cursor: [number, number] = [0, 0]\n  private leading: [number, number] = [0, 0]\n  private charSpacing = 0\n  private transformScale = 1\n\n  constructor(private page: PdfPage) {}\n\n  process(selection: PdfOperatorSelection) {\n    for (const operator of selection.transform()) {\n      this.processOperator(operator)\n    }\n  }\n\n  private processOperator(operator: Partial<Operators>) {\n    if ('showText' in operator) {\n      const [x, y] = this.cursor\n      const scale = this.fontSize * this.transformScale\n      const width = operator.showText.width * scale\n      const spacingOffset = operator.showText.length * this.charSpacing * scale\n      const [left, bottom, right, top] = this.page.viewport.convertToViewportRectangle([\n        x + this.leading[0],\n        y + this.leading[1],\n        x + width + this.leading[0] + spacingOffset,\n        y + scale + this.leading[1]\n      ])\n      const element = this.nextElement()\n      element.text = operator.showText.text\n      element.textColor = this.textColor\n      element.fontFamily = this.fontFamily\n      element.fontWeight = this.fontWeight\n      element.fontStyle = this.fontStyle\n      element.fontSize = scale\n      element.boundingBox = { left, right, top, bottom, width: right - left, height: bottom - top }\n      this.leading[0] += width\n    } else if ('setFillRGBColor' in operator) {\n      this.textColor = operator.setFillRGBColor\n    } else if ('setFont' in operator) {\n      const font = this.page.getCommonObject(operator.setFont.objectId)\n      const { fontFamily, fontStyle, fontWeight } = parseFontName(font.name)\n      this.fontFamily = fontFamily\n      this.fontStyle = fontStyle\n      this.fontWeight = fontWeight\n      this.fontSize = operator.setFont.size\n    } else if ('setTextMatrix' in operator) {\n      this.cursor = [operator.setTextMatrix[4], operator.setTextMatrix[5]]\n      this.leading = [0, 0]\n      this.transformScale = operator.setTextMatrix[0]\n    } else if ('moveText' in operator) {\n      this.cursor[0] += operator.moveText.left * this.transformScale\n      this.cursor[1] += operator.moveText.bottom * this.transformScale\n      this.leading = [0, 0]\n    } else if ('setLeadingMoveText' in operator) {\n      this.cursor[1] += this.leading[1]\n      this.leading = [operator.setLeadingMoveText.left * this.transformScale, operator.setLeadingMoveText.bottom * this.transformScale]\n    } else if ('setCharSpacing' in operator) {\n      this.charSpacing = operator.setCharSpacing\n    }\n  }\n\n  private nextElement() {\n    this.current = {}\n    this.elements.push(this.current)\n    return this.current\n  }\n}\n","import { Util } from 'pdfjs-dist'\nimport { GetViewportParameters, PDFPageProxy, RenderParameters } from 'pdfjs-dist/types/display/api'\nimport { PageViewport } from 'pdfjs-dist/types/display/display_utils'\nimport { PdfDocument } from './PdfDocument'\nimport { PdfOperatorFilter } from './PdfOperator'\nimport { PdfOperatorList } from './PdfOperatorList'\nimport { PdfOperatorSelectionFn } from './PdfOperatorSelection'\nimport { Operators, PaintXObjectOperator } from './PdfOperatorTransforms'\nimport { PdfTextEvaluator } from './PdfTextEvaluator'\nimport { transformImageToArray } from './PdfUtil'\n\nexport interface BoundingBox {\n  left: number\n  right: number\n  bottom: number\n  top: number\n  width: number\n  height: number\n}\n\nexport interface PdfRenderOptions {\n  width?: number\n  type?: string\n  quality?: number\n}\n\nconst PDF_RENDER_DEFAULTS = { type: 'image/jpeg', quality: 75 }\n\nexport class PdfPage {\n  public viewport: PageViewport\n\n  constructor(public document: PdfDocument, private proxy: PDFPageProxy, public operatorList: PdfOperatorList, scale: number) {\n    this.viewport = proxy.getViewport({ scale })\n  }\n\n  getViewport(params: GetViewportParameters) {\n    return this.proxy.getViewport(params)\n  }\n\n  async render(params: RenderParameters) {\n    const _objs = this.proxy.objs._objs\n    const result = await this.proxy.render(params).promise\n    this.proxy.objs._objs = _objs\n    return result\n  }\n\n  selectAll(filter?: string | string[] | PdfOperatorFilter, fn?: PdfOperatorSelectionFn) {\n    return this.operatorList.selectAll(filter, fn)\n  }\n\n  extractAll<T extends object>(filter?: string | string[] | PdfOperatorFilter, fn?: PdfOperatorSelectionFn): T[] {\n    return this.selectAll(filter, fn).map((selection) => selection.extract<T>())\n  }\n\n  extractImages() {\n    const items = this.extractAll<Operators>(['paintImageXObject', 'paintJpegXObject'], (selection) => { selection.before('transform').after('setGState') })\n      .filter(({ paintImageXObject, paintJpegXObject }) => this.hasObject((paintImageXObject ?? paintJpegXObject).objectId))\n      .filter(({ setGState }) =>\n        !setGState || setGState.fillAlpha == null ||\n        (setGState.globalCompositeOperation === 'multiply' ? false : setGState.fillAlpha === 1 && setGState.strokeAlpha === 1)\n      ).map(({ transform, paintImageXObject, paintJpegXObject }) => ({\n        transform,\n        paintXObject: paintImageXObject ?? paintJpegXObject,\n        contentType: paintImageXObject ? 'image/png' : 'image/jpeg'\n      } as Pick<Operators, 'paintXObject' | 'transform'> & { contentType: string }))\n\n    return Promise.all(items.map(async({ transform, paintXObject, contentType }) => {\n      const boundingBox = this.transformToBoundingBox(transform)\n      const data = await this.imageToBlob(paintXObject)\n      const { objectId } = paintXObject\n      return { boundingBox, data, objectId, contentType }\n    }))\n  }\n\n  getCommonObject(objectId: string) {\n    return this.proxy.commonObjs.get(objectId)\n  }\n\n  hasCommonObject(objectId: string) {\n    return this.proxy.commonObjs.has(objectId)\n  }\n\n  getObject(objectId: string) {\n    return this.proxy.objs.get(objectId)\n  }\n\n  hasObject(objectId: string) {\n    return this.proxy.objs.has(objectId)\n  }\n\n  transformToBoundingBox(transform: number[]): BoundingBox {\n    const tx = Util.transform(this.viewport.transform, transform)\n    const angle = Math.atan2(tx[1], tx[0])\n    const height = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3])\n    const width = Math.sqrt(tx[0] * tx[0] + tx[1] * tx[1])\n    const angleCos = angle === 0 ? 1 : Math.cos(angle)\n    const angleSin = angle === 0 ? 0 : Math.sin(angle)\n    const left = tx[4] + height * angleSin\n    const top = tx[5] - height * angleCos\n    const [x1, y1, x2, y2] = angle === 0\n      ? [left, top, left + width, top + height]\n      : Util.getAxialAlignedBoundingBox([0, 0, width, height], [angleCos, angleSin, -angleSin, angleCos, left, top])\n    return { top: y1, right: x2, bottom: y2, left: x1, width: x2 - x1, height: y2 - y1 }\n  }\n\n  imageToBlob({ objectId, width, height }: PaintXObjectOperator): Promise<Blob> {\n    const canvas = document.createElement('canvas')\n    const image = this.getObject(objectId)\n    const data = transformImageToArray(image)\n    canvas.width = width\n    canvas.height = height\n    const context = canvas.getContext('2d')\n    const imageData = new ImageData(data, image.width)\n    context.putImageData(imageData, 0, 0)\n    return new Promise((resolve) => { canvas.toBlob(resolve, 'image/png', 75) })\n  }\n\n  async renderBlob(options: PdfRenderOptions = {}): Promise<Blob> {\n    const canvas = document.createElement<'canvas'>('canvas')\n    const canvasContext = canvas.getContext('2d')\n    const { width, type, quality } = { ...PDF_RENDER_DEFAULTS, width: this.viewport.width, ...options }\n    const scale = width / this.view.width\n    const viewport = this.getViewport({ scale })\n    canvas.height = viewport.height\n    canvas.width = viewport.width\n    await this.render({ canvasContext, viewport })\n    return new Promise((resolve) => { canvas.toBlob(resolve, type, quality) })\n  }\n\n  async extractText() {\n    const evaluator = new PdfTextEvaluator(this)\n    this.selectAll('beginText', (selector) => { selector.after('endText').fill() }).forEach((selection) => { evaluator.process(selection) })\n    return evaluator.elements\n  }\n\n  get title() { return `Page ${this.proxy.pageNumber}` }\n  get pageNumber() { return this.proxy.pageNumber }\n  get pageIndex() { return this.proxy._pageIndex }\n  get width() { return this.viewport.width }\n  get height() { return this.viewport.height }\n  get fingerprint() { return this.operatorList.fingerprint }\n  get view(): BoundingBox {\n    const [left, bottom, right, top] = this.proxy.view\n    return { left, right, bottom, top, width: right - left, height: top - bottom }\n  }\n}\n","import { PDFDocumentProxy } from 'pdfjs-dist/types/display/api'\nimport { PdfOperatorList } from './PdfOperatorList'\nimport { PdfPage } from './PdfPage'\n\nexport class PdfDocument {\n  readonly pages: PdfPage[] = []\n\n  constructor(private proxy: PDFDocumentProxy, private scale?: number) { }\n\n  async process(onProgress?: (event: ProgressEvent) => void) {\n    for (let pageNumber = 1; pageNumber <= this.proxy.numPages; pageNumber += 1) {\n      const proxy = await this.proxy.getPage(pageNumber)\n      const operators = await proxy.getOperatorList()\n      const list = new PdfOperatorList(operators)\n      const scale = this.scale ?? 1024 / (proxy.view[3] - proxy.view[1])\n      const page = new PdfPage(this, proxy, list, scale)\n      this.pages.push(page)\n      if (onProgress) { onProgress(new ProgressEvent('pdf:page', { loaded: pageNumber, total: this.proxy.numPages })) }\n    }\n  }\n\n  getPage(pageNumber: number) { return this.pages[pageNumber - 1] }\n  getOutline() { return this.proxy.getOutline() }\n  getData() { return this.proxy.getData() }\n\n  get fingerprint() { return this.proxy.fingerprint }\n  get numPages() { return this.proxy.numPages }\n}\n","import { Injectable } from '@angular/core'\nimport { PDFDocument } from 'pdf-lib'\nimport { getDocument, GlobalWorkerOptions } from 'pdfjs-dist'\nimport { DocumentInitParameters, PDFDataRangeTransport, PDFDocumentLoadingTask, TypedArray } from 'pdfjs-dist/types/display/api'\nimport { PdfDocument } from './classes/PdfDocument'\n\n@Injectable({ providedIn: 'root' })\nexport class NgxPdfService {\n  constructor() {\n    GlobalWorkerOptions.workerSrc = 'assets/pdf.worker.js'\n  }\n\n  async loadDocument(source: string | TypedArray | DocumentInitParameters | PDFDataRangeTransport, scale?: number, onProgress?: (event: ProgressEvent) => void) {\n    const loadingTask: PDFDocumentLoadingTask = getDocument(source)\n    loadingTask.onProgress = onProgress\n    const proxy = await loadingTask.promise\n    const document = new PdfDocument(proxy, scale)\n    await document.process()\n    return document\n  }\n\n  async sliceDocument(document: PdfDocument, startIndex = 0, endIndex = document.numPages) {\n    const buffer = await document.getData()\n    const doc = await PDFDocument.load(buffer)\n    for (let index = document.numPages - 1; index >= 0; index -= 1) {\n      if (index < startIndex || index >= endIndex) {\n        doc.removePage(index)\n      }\n    }\n    const uint8Array = await doc.save()\n    return this.loadDocument(uint8Array)\n  }\n}\n","import { CommonModule } from '@angular/common'\nimport { InjectionToken, ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core'\nimport { NgxPdfService } from './pdf.service'\n\nexport interface PdfjsConfig {\n  verbosity: any\n}\n\nexport const CONFIG_TOKEN = new InjectionToken<PdfjsConfig>(null)\n\n@NgModule({\n  declarations: [],\n  imports: [CommonModule]\n})\nexport class NgxPdfModule {\n  static forRoot(config: PdfjsConfig): ModuleWithProviders<NgxPdfModule> {\n    return {\n      ngModule: NgxPdfModule,\n      providers: [NgxPdfService, { provide: CONFIG_TOKEN, useValue: config }]\n    }\n  }\n\n  constructor(@Optional() @SkipSelf() parentModule: NgxPdfModule) {\n    if (parentModule) {\n      throw new Error('NgxPdfjsModule is already loaded. Import it in the AppModule only')\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}