@elizaos/plugin-pdf 2.0.0-alpha.13 → 2.0.0-alpha.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.browser.js +27 -5
- package/dist/browser/index.browser.js.map +5 -4
- package/dist/browser/index.d.ts +2 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.node.cjs +1618 -82
- package/dist/cjs/index.node.js.map +21 -4
- package/dist/node/index.d.ts +2 -0
- package/dist/node/index.node.js +1634 -83
- package/dist/node/index.node.js.map +21 -4
- package/dist/services/pdf.d.ts +2 -3
- package/dist/services/pdf.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +10 -8
|
@@ -1,11 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../services/pdf.ts", "../../index.ts"],
|
|
3
|
+
"sources": ["../../services/pdf.ts", "../../node_modules/pdf-parse/dist/pdf-parse/esm/PDFParse.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/Exception.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/geometry/Shape.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/geometry/Point.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/geometry/Line.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/geometry/TableData.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/geometry/Table.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/geometry/LineStore.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/geometry/Rectangle.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/ImageResult.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/InfoResult.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/ParseParameters.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/PathGeometry.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/ScreenshotResult.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/TableResult.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/TextResult.js", "../../node_modules/pdf-parse/dist/pdf-parse/esm/index.js", "../../index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import
|
|
5
|
+
"import { Service, ServiceType, logger, type IAgentRuntime } from \"@elizaos/core\";\nimport * as _pdfParse from \"pdf-parse\";\nconst pdfParse = (_pdfParse as any).default || _pdfParse;\nimport type {\n PdfConversionResult,\n PdfDocumentInfo,\n PdfExtractionOptions,\n} from \"../types\";\n\nexport class PdfService extends Service {\n static serviceType = ServiceType.PDF;\n capabilityDescription = \"The agent is able to convert PDF files to text\";\n\n static async start(_runtime: IAgentRuntime): Promise<PdfService> {\n return new PdfService();\n }\n\n static async stop(runtime: IAgentRuntime): Promise<void> {\n const service = runtime.getService(ServiceType.PDF);\n if (service) {\n await (service as any).stop?.();\n }\n }\n\n async stop(): Promise<void> {}\n\n async convertPdfToText(pdfBuffer: Buffer): Promise<string> {\n try {\n const data = await pdfParse(pdfBuffer);\n return this.cleanUpContent(data.text);\n } catch (error) {\n logger.error(`PdfService: Failed to convert PDF to text - error: ${error}`);\n throw error;\n }\n }\n\n async convertPdfToTextWithOptions(\n pdfBuffer: Buffer,\n options: PdfExtractionOptions = {}\n ): Promise<PdfConversionResult> {\n try {\n const parseOptions: any = {};\n if (options.endPage) {\n parseOptions.max = options.endPage;\n }\n \n const data = await pdfParse(pdfBuffer, parseOptions);\n let text = data.text;\n\n if (options.cleanContent !== false) {\n text = this.cleanUpContent(text);\n }\n\n return {\n success: true,\n text,\n pageCount: data.numpages,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n async getDocumentInfo(pdfBuffer: Buffer): Promise<PdfDocumentInfo> {\n try {\n const data = await pdfParse(pdfBuffer);\n return {\n pageCount: data.numpages,\n metadata: {\n title: data.info?.Title,\n author: data.info?.Author,\n creator: data.info?.Creator,\n producer: data.info?.Producer,\n },\n text: this.cleanUpContent(data.text),\n pages: [],\n };\n } catch (error) {\n logger.error(`PdfService: Failed to get document info - error: ${error}`);\n throw error;\n }\n }\n\n cleanUpContent(content: string): string {\n try {\n const cleaned = content\n .replace(/[^\\S\\r\\n]+/g, \" \")\n .replace(/[ \\t]+(\\r?\\n)/g, \"$1\")\n .trim();\n return cleaned;\n } catch (error) {\n logger.error(`PdfService: Failed to clean up content - error: ${error}`);\n return content;\n }\n }\n}\n\nexport default PdfService;\n",
|
|
6
|
+
"import * as pdfjs from 'pdfjs-dist/legacy/build/pdf.mjs';\nimport { getException } from './Exception.js';\nimport { Line, LineStore, Point, Rectangle } from './geometry/index.js';\nimport { ImageResult } from './ImageResult.js';\nimport { InfoResult } from './InfoResult.js';\nimport { setDefaultParseParameters } from './ParseParameters.js';\nimport { PathGeometry } from './PathGeometry.js';\nimport { ScreenshotResult } from './ScreenshotResult.js';\nimport { TableResult } from './TableResult.js';\nimport { TextResult } from './TextResult.js';\n/**\n * @public\n * Loads PDF documents and exposes helpers for text, image, table, metadata, and screenshot extraction.\n */\nexport class PDFParse {\n options;\n doc;\n progress = { loaded: -1, total: 0 };\n /**\n * Create a new parser with `LoadParameters`.\n * Converts Node.js `Buffer` data to `Uint8Array` automatically and ensures a default verbosity level.\n * @param options - Initialization parameters.\n */\n constructor(options) {\n if (options.verbosity === undefined) {\n options.verbosity = pdfjs.VerbosityLevel.ERRORS;\n }\n if (typeof Buffer !== 'undefined' && options.data instanceof Buffer) {\n options.data = new Uint8Array(options.data);\n }\n this.options = options;\n }\n async destroy() {\n if (this.doc) {\n await this.doc.destroy();\n this.doc = undefined;\n }\n }\n // biome-ignore-start lint/suspicious/noExplicitAny: unsupported underline type\n static get isNodeJS() {\n const isNodeJS = typeof process === 'object' &&\n `${process}` === '[object process]' &&\n !process.versions.nw &&\n !(process.versions.electron &&\n typeof process.type !== 'undefined' &&\n process.type !== 'browser');\n return isNodeJS;\n }\n static setWorker(workerSrc) {\n if (typeof globalThis.pdfjs === 'undefined') {\n globalThis.pdfjs = pdfjs;\n }\n if (pdfjs?.GlobalWorkerOptions === null)\n return '';\n if (workerSrc !== undefined) {\n pdfjs.GlobalWorkerOptions.workerSrc = workerSrc;\n return pdfjs.GlobalWorkerOptions.workerSrc;\n }\n // if (!PDFParse.isNodeJS) {\n // \tpdfjs.GlobalWorkerOptions.workerSrc =\n // \t\t'https://cdn.jsdelivr.net/npm/pdf-parse@latest/dist/browser/pdf.worker.min.mjs';\n // \treturn pdfjs.GlobalWorkerOptions.workerSrc;\n // }\n return pdfjs.GlobalWorkerOptions.workerSrc;\n }\n // biome-ignore-end lint/suspicious/noExplicitAny: unsupported underline type\n /**\n * Load document-level metadata (info, outline, permissions, page labels) and optionally gather per-page link details.\n * @param params - Parse options; set `parsePageInfo` to collect per-page metadata described in `ParseParameters`.\n * @returns Aggregated document metadata in an `InfoResult`.\n */\n async getInfo(params = {}) {\n const doc = await this.load();\n const result = new InfoResult(doc.numPages);\n const { info, metadata } = await doc.getMetadata();\n result.info = info;\n result.metadata = metadata;\n result.fingerprints = doc.fingerprints;\n result.outline = await doc.getOutline();\n result.permission = await doc.getPermissions();\n const pageLabels = await doc.getPageLabels();\n if (params.parsePageInfo) {\n for (let i = 1; i <= result.total; i++) {\n if (this.shouldParse(i, result.total, params)) {\n const page = await doc.getPage(i);\n const pageLinkResult = await this.getPageLinks(page);\n pageLinkResult.pageLabel = pageLabels?.[page.pageNumber];\n result.pages.push(pageLinkResult);\n page.cleanup();\n }\n }\n }\n return result;\n }\n async getPageLinks(page) {\n const viewport = page.getViewport({ scale: 1 });\n const result = {\n pageNumber: page.pageNumber,\n links: [],\n width: viewport.width,\n height: viewport.height,\n };\n // biome-ignore lint/suspicious/noExplicitAny: <unsupported underline type>\n const annotations = (await page.getAnnotations({ intent: 'display' })) || [];\n for (const i of annotations) {\n if (i.subtype !== 'Link')\n continue;\n const url = i.url ?? i.unsafeUrl;\n if (!url)\n continue;\n const text = i.overlaidText || '';\n result.links.push({ url, text });\n }\n return result;\n }\n /**\n * Extract plain text for each requested page, optionally enriching hyperlinks and enforcing line or cell separators.\n * @param params - Parse options controlling pagination, link handling, and line/cell thresholds.\n * @returns A `TextResult` containing page-wise text and a concatenated document string.\n */\n async getText(params = {}) {\n const doc = await this.load();\n const result = new TextResult(doc.numPages);\n for (let i = 1; i <= result.total; i++) {\n if (this.shouldParse(i, result.total, params)) {\n const page = await doc.getPage(i);\n const text = await this.getPageText(page, params, result.total);\n result.pages.push({\n text: text,\n num: i,\n });\n page.cleanup();\n }\n }\n for (const page of result.pages) {\n if (params.pageJoiner) {\n let pageNumber = params.pageJoiner.replace('page_number', `${page.num}`);\n pageNumber = pageNumber.replace('total_number', `${result.total}`);\n result.text += `${page.text}\\n${pageNumber}\\n\\n`;\n }\n else {\n result.text += `${page.text}\\n\\n`;\n }\n }\n return result;\n }\n async load() {\n try {\n if (this.doc === undefined) {\n const loadingTask = pdfjs.getDocument(this.options);\n loadingTask.onProgress = (progress) => {\n this.progress = progress;\n };\n this.doc = await loadingTask.promise;\n }\n return this.doc;\n }\n catch (error) {\n throw getException(error);\n }\n }\n shouldParse(currentPage, totalPage, params) {\n params.partial = params?.partial ?? [];\n params.first = params?.first ?? 0;\n params.last = params?.last ?? 0;\n // parse specific pages\n if (params.partial.length > 0) {\n if (params.partial.includes(currentPage)) {\n return true;\n }\n return false;\n }\n // parse pagest beetween first..last\n if (params.first > 0 && params.last > 0) {\n if (currentPage >= params.first && currentPage <= params.last) {\n return true;\n }\n return false;\n }\n // parse first x page\n if (params.first > 0) {\n if (currentPage <= params.first) {\n return true;\n }\n return false;\n }\n // parse last x page\n if (params.last > 0) {\n if (currentPage > totalPage - params.last) {\n return true;\n }\n return false;\n }\n return true;\n }\n async getPageText(page, parseParams, total) {\n const viewport = page.getViewport({ scale: 1 });\n const params = setDefaultParseParameters(parseParams);\n const textContent = await page.getTextContent({\n includeMarkedContent: !!params.includeMarkedContent,\n disableNormalization: !!params.disableNormalization,\n });\n let links = new Map();\n if (params.parseHyperlinks) {\n links = await this.getHyperlinks(page, viewport);\n }\n const strBuf = [];\n let lastX;\n let lastY;\n let lineHeight = 0;\n for (const item of textContent.items) {\n if (!('str' in item))\n continue;\n const tm = item.transform ?? item.transform;\n const [x, y] = viewport.convertToViewportPoint(tm[4], tm[5]);\n if (params.parseHyperlinks) {\n const posArr = links.get(item.str) || [];\n const hit = posArr.find((l) => x >= l.rect.left && x <= l.rect.right && y >= l.rect.top && y <= l.rect.bottom);\n if (hit) {\n item.str = `[${item.str}](${hit.url})`;\n }\n }\n if (params.lineEnforce) {\n if (lastY !== undefined && Math.abs(lastY - y) > params.lineThreshold) {\n const lastItem = strBuf.length ? strBuf[strBuf.length - 1] : undefined;\n const isCurrentItemHasNewLine = item.str.startsWith('\\n') || (item.str.trim() === '' && item.hasEOL);\n if (lastItem?.endsWith('\\n') === false && !isCurrentItemHasNewLine) {\n const ydiff = Math.abs(lastY - y);\n if (ydiff - 1 > lineHeight) {\n strBuf.push('\\n');\n lineHeight = 0;\n }\n }\n }\n }\n if (params.cellSeparator) {\n if (lastY !== undefined && Math.abs(lastY - y) < params.lineThreshold) {\n if (lastX !== undefined && Math.abs(lastX - x) > params.cellThreshold) {\n item.str = `${params.cellSeparator}${item.str}`;\n }\n }\n }\n strBuf.push(item.str);\n lastX = x + item.width;\n lastY = y;\n lineHeight = Math.max(lineHeight, item.height);\n if (item.hasEOL) {\n strBuf.push('\\n');\n }\n if (item.hasEOL || item.str.endsWith('\\n')) {\n lineHeight = 0;\n }\n }\n if (params.itemJoiner) {\n return strBuf.join(params.itemJoiner);\n }\n return strBuf.join('');\n }\n async getHyperlinks(page, viewport) {\n const result = new Map();\n // biome-ignore lint/suspicious/noExplicitAny: <unsupported underline type>\n const annotations = (await page.getAnnotations({ intent: 'display' })) || [];\n for (const i of annotations) {\n if (i.subtype !== 'Link')\n continue;\n const url = i.url ?? i.unsafeUrl;\n if (!url)\n continue;\n const text = i.overlaidText;\n if (!text)\n continue;\n const rectVp = viewport.convertToViewportRectangle(i.rect);\n const left = Math.min(rectVp[0], rectVp[2]) - 0.5;\n const top = Math.min(rectVp[1], rectVp[3]) - 0.5;\n const right = Math.max(rectVp[0], rectVp[2]) + 0.5;\n const bottom = Math.max(rectVp[1], rectVp[3]) + 0.5;\n const pos = { rect: { left, top, right, bottom }, url, text, used: false };\n const el = result.get(text);\n if (el) {\n el.push(pos);\n }\n else {\n result.set(text, [pos]);\n }\n }\n return result;\n }\n /**\n * Extract embedded images from requested pages.\n *\n * Behavior notes:\n * - Pages are selected according to ParseParameters (partial, first, last).\n * - Images smaller than `params.imageThreshold` (width OR height) are skipped.\n * - Returned ImageResult contains per-page PageImages; each image entry includes:\n * - data: Uint8Array (present when params.imageBuffer === true)\n * - dataUrl: string (present when params.imageDataUrl === true)\n * - width, height, kind, name\n * - Works in both Node.js (canvas.toBuffer) and browser (canvas.toDataURL) environments.\n *\n * @param params - ParseParameters controlling page selection, thresholds and output format.\n * @returns Promise<ImageResult> with extracted images grouped by page.\n */\n async getImage(params = {}) {\n const doc = await this.load();\n const result = new ImageResult(doc.numPages);\n setDefaultParseParameters(params);\n for (let i = 1; i <= result.total; i++) {\n if (this.shouldParse(i, result.total, params)) {\n const page = await doc.getPage(i);\n const ops = await page.getOperatorList();\n const pageImages = { pageNumber: i, images: [] };\n result.pages.push(pageImages);\n for (let j = 0; j < ops.fnArray.length; j++) {\n if (ops.fnArray[j] === pdfjs.OPS.paintInlineImageXObject || ops.fnArray[j] === pdfjs.OPS.paintImageXObject) {\n const name = ops.argsArray[j][0];\n const isCommon = page.commonObjs.has(name);\n const imgPromise = isCommon\n ? this.resolveEmbeddedImage(page.commonObjs, name)\n : this.resolveEmbeddedImage(page.objs, name);\n const { width, height, kind, data } = await imgPromise;\n if (params.imageThreshold) {\n if (params.imageThreshold >= width || params.imageThreshold >= height) {\n continue;\n }\n }\n // biome-ignore lint/suspicious/noExplicitAny: <underlying library does not contain valid typedefs>\n const canvasFactory = doc.canvasFactory;\n const canvasAndContext = canvasFactory.create(width, height);\n const context = canvasAndContext.context;\n let imgData = null;\n if (kind === pdfjs.ImageKind.RGBA_32BPP) {\n imgData = context.createImageData(width, height);\n imgData.data.set(data);\n }\n else {\n imgData = context.createImageData(width, height);\n this.convertToRGBA({\n src: data,\n dest: new Uint32Array(imgData.data.buffer),\n width,\n height,\n kind,\n });\n }\n context.putImageData(imgData, 0, 0);\n // Browser and Node.js compatibility\n let buffer = new Uint8Array();\n let dataUrl = '';\n if (typeof canvasAndContext.canvas.toBuffer === 'function') {\n // Node.js environment (canvas package)\n // biome-ignore lint/suspicious/noExplicitAny: <underline lib not support>\n let nodeBuffer;\n if (params.imageBuffer) {\n nodeBuffer = canvasAndContext.canvas.toBuffer('image/png');\n buffer = new Uint8Array(nodeBuffer);\n }\n if (params.imageDataUrl) {\n if (nodeBuffer) {\n dataUrl = `data:image/png;base64,${nodeBuffer.toString('base64')}`;\n }\n else {\n nodeBuffer = canvasAndContext.canvas.toBuffer('image/png');\n buffer = new Uint8Array(nodeBuffer);\n dataUrl = `data:image/png;base64,${nodeBuffer.toString('base64')}`;\n }\n }\n }\n else {\n // Browser environment\n if (params.imageBuffer) {\n const imageData = canvasAndContext.context.getImageData(0, 0, canvasAndContext.canvas.width, canvasAndContext.canvas.height);\n buffer = new Uint8Array(imageData.data);\n }\n if (params.imageDataUrl) {\n dataUrl = canvasAndContext.canvas.toDataURL('image/png');\n }\n }\n pageImages.images.push({\n data: buffer,\n dataUrl,\n name,\n height,\n width,\n kind,\n });\n }\n }\n }\n }\n return result;\n }\n convertToRGBA({ src, dest, width, height, kind, }) {\n if (kind === pdfjs.ImageKind.RGB_24BPP) {\n // RGB 24-bit per pixel\n for (let i = 0, j = 0; i < src.length; i += 3, j++) {\n const r = src[i];\n const g = src[i + 1];\n const b = src[i + 2];\n dest[j] = (255 << 24) | (b << 16) | (g << 8) | r;\n }\n }\n else if (kind === pdfjs.ImageKind.GRAYSCALE_1BPP) {\n // Grayscale 1-bit per pixel\n let pixelIndex = 0;\n for (let i = 0; i < src.length; i++) {\n const byte = src[i];\n for (let bit = 7; bit >= 0; bit--) {\n if (pixelIndex >= width * height)\n break;\n const isWhite = ((byte >> bit) & 1) === 1;\n const gray = isWhite ? 255 : 0;\n dest[pixelIndex++] = (255 << 24) | (gray << 16) | (gray << 8) | gray;\n }\n }\n }\n else if (kind === undefined || kind === null) {\n // Unknown or undefined kind - try to infer from data length\n const bytesPerPixel = src.length / (width * height);\n if (Math.abs(bytesPerPixel - 3) < 0.1) {\n // Likely RGB 24BPP\n for (let i = 0, j = 0; i < src.length; i += 3, j++) {\n const r = src[i];\n const g = src[i + 1];\n const b = src[i + 2];\n dest[j] = (255 << 24) | (b << 16) | (g << 8) | r;\n }\n }\n else if (Math.abs(bytesPerPixel - 4) < 0.1) {\n // Likely RGBA 32BPP\n for (let i = 0, j = 0; i < src.length; i += 4, j++) {\n const r = src[i];\n const g = src[i + 1];\n const b = src[i + 2];\n const a = src[i + 3];\n dest[j] = (a << 24) | (b << 16) | (g << 8) | r;\n }\n }\n else if (Math.abs(bytesPerPixel - 1) < 0.1) {\n // Likely grayscale 8BPP\n for (let i = 0; i < src.length; i++) {\n const gray = src[i];\n dest[i] = (255 << 24) | (gray << 16) | (gray << 8) | gray;\n }\n }\n else {\n throw new Error(`convertToRGBA: Cannot infer image format. kind: ${kind}, bytesPerPixel: ${bytesPerPixel}, width: ${width}, height: ${height}, dataLength: ${src.length}`);\n }\n }\n else {\n throw new Error(`convertToRGBA: Unsupported image kind: ${kind}. Available kinds: GRAYSCALE_1BPP=${pdfjs.ImageKind.GRAYSCALE_1BPP}, RGB_24BPP=${pdfjs.ImageKind.RGB_24BPP}, RGBA_32BPP=${pdfjs.ImageKind.RGBA_32BPP}`);\n }\n }\n resolveEmbeddedImage(pdfObjects, name) {\n return new Promise((resolve, reject) => {\n // biome-ignore lint/suspicious/noExplicitAny: <underlying library does not contain valid typedefs>\n pdfObjects.get(name, (imgData) => {\n if (imgData) {\n // Check different possible data sources\n let dataBuff;\n if (imgData.data instanceof Uint8Array) {\n dataBuff = imgData.data;\n }\n else if (imgData.data instanceof Uint8ClampedArray) {\n dataBuff = new Uint8Array(imgData.data);\n }\n else if (imgData.data?.buffer) {\n // Typed array with buffer\n dataBuff = new Uint8Array(imgData.data.buffer);\n }\n else if (imgData.bitmap) {\n // Some browsers might use bitmap\n // biome-ignore lint/suspicious/noExplicitAny: <underlying library does not contain valid typedefs>\n const canvasFactory = this.doc.canvasFactory;\n const canvasAndContext = canvasFactory.create(imgData.bitmap.width, imgData.bitmap.height);\n canvasAndContext.context.drawImage(imgData.bitmap, 0, 0);\n const imageData = canvasAndContext.context.getImageData(0, 0, imgData.bitmap.width, imgData.bitmap.height);\n dataBuff = new Uint8Array(imageData.data.buffer);\n }\n else if (ArrayBuffer.isView(imgData.data)) {\n // Generic typed array\n dataBuff = new Uint8Array(imgData.data.buffer, imgData.data.byteOffset, imgData.data.byteLength);\n }\n if (!dataBuff) {\n reject(new Error(`Image object ${name}: data field is empty or invalid. Available fields: ${Object.keys(imgData).join(', ')}`));\n return;\n }\n if (dataBuff.length === 0) {\n reject(new Error(`Image object ${name}: data buffer is empty (length: 0)`));\n return;\n }\n resolve({ width: imgData.width, height: imgData.height, kind: imgData.kind, data: dataBuff });\n }\n else {\n reject(new Error(`Image object ${name} not found`));\n }\n });\n });\n }\n /**\n * Render pages to raster screenshots.\n *\n * Behavior notes:\n * - Pages are selected according to ParseParameters (partial, first, last).\n * - Use params.scale for zoom; if params.desiredWidth is specified it takes precedence.\n * - Each ScreenshotResult page contains:\n * - data: Uint8Array (when params.imageBuffer === true)\n * - dataUrl: string (when params.imageDataUrl === true)\n * - pageNumber, width, height, scale\n * - Works in both Node.js (canvas.toBuffer) and browser (canvas.toDataURL) environments.\n *\n * @param parseParams - ParseParameters controlling page selection and render options.\n * @returns Promise<ScreenshotResult> with rendered page images.\n */\n async getScreenshot(parseParams = {}) {\n //const base = new URL('../../node_modules/pdfjs-dist/', import.meta.url);\n //this.options.cMapUrl = new URL('cmaps/', base).href;\n //this.options.cMapPacked = true;\n //this.options.standardFontDataUrl = new URL('legacy/build/standard_fonts/', base).href;\n const params = setDefaultParseParameters(parseParams);\n const doc = await this.load();\n const result = new ScreenshotResult(doc.numPages);\n if (this.doc === undefined) {\n throw new Error('PDF document not loaded');\n }\n for (let i = 1; i <= result.total; i++) {\n if (this.shouldParse(i, result.total, params)) {\n const page = await this.doc.getPage(i);\n let viewport = page.getViewport({ scale: params.scale });\n if (params.desiredWidth) {\n viewport = page.getViewport({ scale: 1 });\n // desiredWidth\n const scale = params.desiredWidth / viewport.width;\n viewport = page.getViewport({ scale: scale });\n }\n // biome-ignore lint/suspicious/noExplicitAny: <underlying library does not contain valid typedefs>\n const canvasFactory = this.doc.canvasFactory;\n const canvasAndContext = canvasFactory.create(viewport.width, viewport.height);\n const renderContext = {\n canvasContext: canvasAndContext.context,\n viewport,\n canvas: canvasAndContext.canvas,\n };\n const renderTask = page.render(renderContext);\n await renderTask.promise;\n // Convert the canvas to an image buffer.\n let data = new Uint8Array();\n let dataUrl = '';\n if (typeof canvasAndContext.canvas.toBuffer === 'function') {\n // Node.js environment (canvas package)\n // biome-ignore lint/suspicious/noExplicitAny: <underline lib not support>\n let nodeBuffer;\n if (params.imageBuffer) {\n nodeBuffer = canvasAndContext.canvas.toBuffer('image/png');\n data = new Uint8Array(nodeBuffer);\n }\n if (params.imageDataUrl) {\n if (nodeBuffer) {\n dataUrl = `data:image/png;base64,${nodeBuffer.toString('base64')}`;\n }\n else {\n nodeBuffer = canvasAndContext.canvas.toBuffer('image/png');\n data = new Uint8Array(nodeBuffer);\n dataUrl = `data:image/png;base64,${nodeBuffer.toString('base64')}`;\n }\n }\n }\n else {\n // Browser environment\n if (params.imageBuffer) {\n const imageData = canvasAndContext.context.getImageData(0, 0, canvasAndContext.canvas.width, canvasAndContext.canvas.height);\n data = new Uint8Array(imageData.data);\n }\n if (params.imageDataUrl) {\n dataUrl = canvasAndContext.canvas.toDataURL('image/png');\n //const base64 = dataUrl.split(',')[1];\n //const binaryString = atob(base64);\n //data = new Uint8Array(binaryString.length);\n //for (let i = 0; i < binaryString.length; i++) {\n //\tdata[i] = binaryString.charCodeAt(i);\n //}\n }\n }\n result.pages.push({\n data,\n dataUrl,\n pageNumber: i,\n width: viewport.width,\n height: viewport.height,\n scale: viewport.scale,\n });\n page.cleanup();\n }\n }\n return result;\n }\n /**\n * Detect and extract tables from pages by analysing vector drawing operators, then populate cells with text.\n *\n * Behavior notes:\n * - Scans operator lists for rectangles/lines that form table grids (uses PathGeometry and LineStore).\n * - Normalizes detected geometry and matches positioned text to table cells.\n * - Honors ParseParameters for page selection.\n *\n * @param params - ParseParameters controlling which pages to analyse (partial/first/last).\n * @returns Promise<TableResult> containing discovered tables per page.\n */\n async getTable(params = {}) {\n const doc = await this.load();\n const result = new TableResult(doc.numPages);\n if (this.doc === undefined) {\n throw new Error('PDF document not loaded');\n }\n for (let i = 1; i <= result.total; i++) {\n if (this.shouldParse(i, result.total, params)) {\n const page = await this.doc.getPage(i);\n //const viewport = page.getViewport({ scale: 1 });\n //viewport.convertToViewportPoint(0, 0);\n const store = await this.getPageTables(page);\n //const store = await this.getPageGeometry(page);\n store.normalize();\n const tableDataArr = store.getTableData();\n await this.fillPageTables(page, tableDataArr);\n const pageTableResult = { num: i, tables: [] };\n for (const table of tableDataArr) {\n //if (table.cellCount < 3) continue\n pageTableResult.tables.push(table.toArray());\n //const pageTableResult: PageTableResult = { num: i, tables: table.toArray() };\n //pageTableResult.tables.push(table.toData())\n }\n result.pages.push(pageTableResult);\n page.cleanup();\n }\n }\n // for (const table of Table.AllTables) {\n // if (table.cellCount < 3) continue\n // const str = table.toString()\n // console.log(str)\n // }\n return result;\n }\n getPathGeometry(mm) {\n const width = mm[2] - mm[0];\n const height = mm[3] - mm[1];\n if (mm[0] === Infinity) {\n return PathGeometry.undefined;\n }\n if (width > 5 && height > 5) {\n return PathGeometry.rectangle;\n }\n else if (width > 5 && height === 0) {\n return PathGeometry.hline;\n }\n else if (width === 0 && height > 5) {\n return PathGeometry.vline;\n }\n return PathGeometry.undefined;\n }\n async getPageTables(page) {\n const lineStore = new LineStore();\n const viewport = page.getViewport({ scale: 1 });\n let transformMatrix = [1, 0, 0, 1, 0, 0];\n const transformStack = [];\n const opList = await page.getOperatorList();\n for (let i = 0; i < opList.fnArray.length; i++) {\n const fn = opList.fnArray[i];\n const args = opList.argsArray[i];\n const op = args?.[0] ?? 0;\n const mm = args?.[2] ?? [Infinity, Infinity, -Infinity, -Infinity];\n //const minMax = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n if (fn === pdfjs.OPS.constructPath) {\n if (op === pdfjs.OPS.fill) {\n //debugger;\n }\n if (op !== pdfjs.OPS.stroke) {\n continue;\n }\n const pg = this.getPathGeometry(mm);\n if (pg === PathGeometry.rectangle) {\n const rect = new Rectangle(new Point(mm[0], mm[1]), mm[2] - mm[0], mm[3] - mm[1]);\n rect.transform(transformMatrix);\n rect.transform(viewport.transform);\n lineStore.addRectangle(rect);\n }\n else if (pg === PathGeometry.hline || pg === PathGeometry.vline) {\n const from = new Point(mm[0], mm[1]);\n const to = new Point(mm[2], mm[3]);\n const line = new Line(from, to);\n line.transform(transformMatrix);\n line.transform(viewport.transform);\n lineStore.add(line);\n }\n else {\n //debugger;\n }\n // if (op === pdfjs.OPS.rectangle) {\n // \tdebugger;\n // } else if (op === pdfjs.OPS.moveTo) {\n // \tdebugger;\n // } else if (op === pdfjs.OPS.lineTo) {\n // \tdebugger;\n // } else if (op === pdfjs.OPS.endPath) {\n // \tconst combinedMatrix = pdfjs.Util.transform(viewport.transform, transformMatrix);\n // \t// while (args[1].length) {\n // \t// \tconst drawOp = args[1].shift();\n // \t// \tdebugger;\n // \t// }\n // } else {\n // \t//debugger;\n // }\n }\n else if (fn === pdfjs.OPS.setLineWidth) {\n //debugger;\n }\n else if (fn === pdfjs.OPS.save) {\n transformStack.push(transformMatrix);\n }\n else if (fn === pdfjs.OPS.restore) {\n const restoredMatrix = transformStack.pop();\n if (restoredMatrix) {\n transformMatrix = restoredMatrix;\n }\n }\n else if (fn === pdfjs.OPS.transform) {\n //transformMatrix = this.transform_fn(transformMatrix, args);\n transformMatrix = pdfjs.Util.transform(transformMatrix, args);\n }\n }\n return lineStore;\n }\n // private async getPageGeometry(page: PDFPageProxy): Promise<LineStore> {\n // \tconst lineStore: LineStore = new LineStore();\n // \tconst opList = await page.getOperatorList();\n // \tconst viewport = page.getViewport({ scale: 1 });\n // \tlet transformMatrix = [1, 0, 0, 1, 0, 0];\n // \tconst transformStack: Array<Array<number>> = [];\n // \tlet current_x: number = 0;\n // \tlet current_y: number = 0;\n // \tfor (let j = 0; j < opList.fnArray.length; j++) {\n // \t\tconst fn = opList.fnArray[j];\n // \t\tconst args = opList.argsArray[j];\n // \t\tif (fn === pdfjs.OPS.constructPath) {\n // \t\t\twhile (args[0].length) {\n // \t\t\t\tconst op = args[0].shift();\n // \t\t\t\tconst combinedMatrix = pdfjs.Util.transform(viewport.transform, transformMatrix);\n // \t\t\t\tif (op === pdfjs.OPS.rectangle) {\n // \t\t\t\t\tconst x = args[1].shift();\n // \t\t\t\t\tconst y = args[1].shift();\n // \t\t\t\t\tconst width = args[1].shift();\n // \t\t\t\t\tconst height = args[1].shift();\n // \t\t\t\t\tif (Math.min(width, height) <= 2) {\n // \t\t\t\t\t\t// TODO remove\n // \t\t\t\t\t\tdebugger;\n // \t\t\t\t\t}\n // \t\t\t\t\tconst rect = new Rectangle(new Point(x, y), width, height);\n // \t\t\t\t\trect.transform(combinedMatrix);\n // \t\t\t\t\t//rect.transform(viewport.transform);\n // \t\t\t\t\tlineStore.addRectangle(rect);\n // \t\t\t\t} else if (op === pdfjs.OPS.moveTo) {\n // \t\t\t\t\tcurrent_x = args[1].shift();\n // \t\t\t\t\tcurrent_y = args[1].shift();\n // \t\t\t\t} else if (op === pdfjs.OPS.lineTo) {\n // \t\t\t\t\tconst x = args[1].shift();\n // \t\t\t\t\tconst y = args[1].shift();\n // \t\t\t\t\t//default trasform\n // \t\t\t\t\tconst from = new Point(current_x, current_y);\n // \t\t\t\t\tconst to = new Point(x, y);\n // \t\t\t\t\tconst line = new Line(from, to);\n // \t\t\t\t\tline.transform(combinedMatrix);\n // \t\t\t\t\t//line.transform(viewport.transform);\n // \t\t\t\t\t// // viewport transform\n // \t\t\t\t\t// const _from = viewport.convertToViewportPoint(line.from.x, line.from.y)\n // \t\t\t\t\t// const _to = viewport.convertToViewportPoint(line.to.x, line.to.y)\n // \t\t\t\t\t//\n // \t\t\t\t\t// const transformedLine = new Line(new Point(_from[0], _from[1]), new Point(_to[0], _to[1]))\n // \t\t\t\t\tlineStore.add(line);\n // \t\t\t\t\tcurrent_x = x;\n // \t\t\t\t\tcurrent_y = y;\n // \t\t\t\t}\n // \t\t\t}\n // \t\t} else if (fn === pdfjs.OPS.save) {\n // \t\t\ttransformStack.push(transformMatrix);\n // \t\t} else if (fn === pdfjs.OPS.restore) {\n // \t\t\tconst restoredMatrix = transformStack.pop();\n // \t\t\tif (restoredMatrix) {\n // \t\t\t\ttransformMatrix = restoredMatrix;\n // \t\t\t}\n // \t\t} else if (fn === pdfjs.OPS.transform) {\n // \t\t\t//transformMatrix = this.transform_fn(transformMatrix, args);\n // \t\t\ttransformMatrix = pdfjs.Util.transform(transformMatrix, args);\n // \t\t}\n // \t}\n // \treturn lineStore;\n // }\n async fillPageTables(page, pageTables) {\n //const resultTable: Array<Table> = []\n const viewport = page.getViewport({ scale: 1 });\n // for (let i = 0; i < pageTables.length; i++) {\n // const currentTable = pageTables[i]\n // }\n //pageTables = pageTables.filter((table) => table.cellCount > 3)\n const textContent = await page.getTextContent({\n includeMarkedContent: false,\n disableNormalization: false,\n });\n for (const textItem of textContent.items) {\n if (!('str' in textItem))\n continue;\n const tx = pdfjs.Util.transform(pdfjs.Util.transform(viewport.transform, textItem.transform), [1, 0, 0, -1, 0, 0]);\n //const resXY = viewport.convertToViewportPoint(tx[4], tx[5]);\n // textItem.transform = pdfjs.Util.transform(viewport.transform, textItem.transform)\n // textItem.transform[5] = viewport.height - textItem.transform[5] - textItem.height\n for (const pageTable of pageTables) {\n const cell = pageTable.findCell(tx[4], tx[5]);\n if (cell) {\n cell.text.push(textItem.str);\n if (textItem.hasEOL) {\n cell.text.push('\\n');\n }\n break;\n }\n }\n //Table.tryAddText(pageTables, textItem)\n }\n }\n}\n//PDFParse.setWorker();\n//# sourceMappingURL=PDFParse.js.map",
|
|
7
|
+
"/* biome-ignore-all lint/suspicious/noExplicitAny: underline-type */\n/**\n * Error thrown when the parsed data is not a valid PDF document.\n *\n * Use this exception to signal that the input cannot be interpreted as a PDF\n * (corrupt file, invalid header, etc.).\n *\n * @public\n */\nexport class InvalidPDFException extends Error {\n /**\n * Create a new InvalidPDFException.\n * @param message - Optional error message.\n * @param cause - Optional underlying cause (preserved on modern runtimes).\n */\n constructor(message, cause) {\n if (cause !== undefined) {\n // Use modern ErrorOptions to attach cause when supported\n super(message ?? 'Invalid PDF', { cause });\n }\n else {\n super(message ?? 'Invalid PDF');\n }\n this.name = 'InvalidPDFException';\n // Fix TS/ES prototype chain (required)\n Object.setPrototypeOf(this, InvalidPDFException.prototype);\n // preserve native stack trace where available\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, InvalidPDFException);\n }\n // If you need to support older TS/targets that don't accept ErrorOptions,\n // replace the above super(...) with super(...); and uncomment:\n // if (cause !== undefined) (this as any).cause = cause;\n }\n}\n/**\n * Error indicating a PDF file requires a password or the provided password is incorrect.\n *\n * @public\n */\nexport class PasswordException extends Error {\n /**\n * Create a new PasswordException.\n * @param message - Optional error message.\n * @param cause - Optional underlying cause.\n */\n constructor(message, cause) {\n if (cause !== undefined) {\n super(message ?? 'Password required or incorrect', { cause });\n }\n else {\n super(message ?? 'Password required or incorrect');\n }\n this.name = 'PasswordException';\n Object.setPrototypeOf(this, PasswordException.prototype);\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, PasswordException);\n }\n // Fallback for older targets: if needed use (this as any).cause = cause;\n }\n}\n/**\n * Error thrown when the PDF structure/contents are malformed and cannot be parsed.\n *\n * This is raised for low-level format problems detected while reading PDF objects.\n * Errors caused during parsing PDF data.\n *\n * @public\n */\nexport class FormatError extends Error {\n /**\n * Create a new FormatError.\n * @param message - Optional message describing the format problem.\n * @param cause - Optional underlying cause.\n */\n constructor(message, cause) {\n if (cause !== undefined) {\n super(message ?? 'PDF format error', { cause });\n }\n else {\n super(message ?? 'PDF format error');\n }\n this.name = 'FormatError';\n Object.setPrototypeOf(this, FormatError.prototype);\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, FormatError);\n }\n // Fallback for older targets: if needed use (this as any).cause = cause;\n }\n}\n/**\n * Generic wrapper for errors where the library cannot classify the cause.\n *\n * The `details` property may contain additional information provided by the\n * underlying PDF library.\n *\n * @public\n */\nexport class UnknownErrorException extends Error {\n /**\n * Create a new UnknownErrorException.\n * @param message - Optional error message.\n * @param details - Optional additional details from the PDF library.\n * @param cause - Optional underlying cause.\n */\n constructor(message, details, cause) {\n if (cause !== undefined) {\n super(message ?? 'Unknown error', { cause });\n }\n else {\n super(message ?? 'Unknown error');\n }\n this.name = 'UnknownErrorException';\n Object.setPrototypeOf(this, UnknownErrorException.prototype);\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, UnknownErrorException);\n }\n // additional info field from pdf.mjs\n this.details = details;\n }\n}\n/**\n * Represents an HTTP/network response error encountered while fetching PDF data.\n *\n * The `status` and `missing` properties mirror values that may be provided\n * by the underlying PDF library's network layer.\n *\n * @public\n */\nexport class ResponseException extends Error {\n /**\n * Create a new ResponseException.\n * @param message - Optional error message.\n * @param status - Optional numeric HTTP/status code.\n * @param missing - Optional field describing missing resources.\n * @param cause - Optional underlying cause.\n */\n constructor(message, status, missing, cause) {\n if (cause !== undefined) {\n super(message ?? 'Response error', { cause });\n }\n else {\n super(message ?? 'Response error');\n }\n this.name = 'ResponseException';\n Object.setPrototypeOf(this, ResponseException.prototype);\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, ResponseException);\n }\n // fields from pdf.mjs\n this.status = status;\n this.missing = missing;\n }\n}\n/**\n * Error used to indicate that an operation was aborted (for example by an AbortSignal).\n *\n * @public\n */\nexport class AbortException extends Error {\n /**\n * Create a new AbortException.\n * @param message - Optional error message.\n * @param cause - Optional underlying cause.\n */\n constructor(message, cause) {\n if (cause !== undefined) {\n super(message ?? 'Operation aborted', { cause });\n }\n else {\n super(message ?? 'Operation aborted');\n }\n this.name = 'AbortException';\n Object.setPrototypeOf(this, AbortException.prototype);\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, AbortException);\n }\n }\n}\n/**\n * Normalize arbitrary thrown values into an Error instance used by the library.\n *\n * Known Error instances with specific names are mapped to the library's\n * typed exceptions in order to preserve type information and any additional\n * fields (for example `details`, `status`, etc.). If the value is not an\n * Error it is converted to a generic Error containing the stringified value.\n *\n * @public\n * @param error - The thrown value to normalize.\n * @returns An Error instance representing the provided value.\n */\nexport function getException(error) {\n if (error instanceof Error) {\n // preserve original error (stack) when not remapping\n switch (error.name) {\n case 'InvalidPDFException':\n return new InvalidPDFException(error.message, error);\n case 'PasswordException':\n return new PasswordException(error.message, error);\n case 'FormatError':\n return new FormatError(error.message, error);\n case 'UnknownErrorException':\n // preserve details if present on original\n return new UnknownErrorException(error.message, error.details, error);\n case 'ResponseException':\n return new ResponseException(error.message, error.status, error.missing, error);\n case 'AbortException':\n return new AbortException(error.message, error);\n // add other mappings as needed\n default:\n return error;\n }\n }\n // non-Error value -> convert to Error\n return new Error(String(error));\n}\n//# sourceMappingURL=Exception.js.map",
|
|
8
|
+
"export class Shape {\n static tolerance = 2;\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n}\n//# sourceMappingURL=Shape.js.map",
|
|
9
|
+
"import { Shape } from './Shape.js';\nexport class Point extends Shape {\n x;\n y;\n constructor(x, y) {\n super();\n this.x = x;\n this.y = y;\n }\n equal(point) {\n return point.x === this.x && point.y === this.y;\n }\n transform(matrix) {\n const p = Shape.applyTransform([this.x, this.y], matrix);\n this.x = p[0];\n this.y = p[1];\n return this;\n }\n}\n//# sourceMappingURL=Point.js.map",
|
|
10
|
+
"import { Point } from './Point.js';\nimport { Shape } from './Shape.js';\nexport var LineDirection;\n(function (LineDirection) {\n LineDirection[LineDirection[\"None\"] = 0] = \"None\";\n LineDirection[LineDirection[\"Horizontal\"] = 1] = \"Horizontal\";\n LineDirection[LineDirection[\"Vertical\"] = 2] = \"Vertical\";\n})(LineDirection || (LineDirection = {}));\nexport class Line extends Shape {\n from;\n to;\n direction = LineDirection.None;\n length = 0;\n intersections = [];\n gaps = [];\n constructor(from, to) {\n super();\n this.from = from;\n this.to = to;\n this.init();\n }\n init() {\n let from = this.from;\n let to = this.to;\n if (Math.abs(from.y - to.y) < Shape.tolerance) {\n this.direction = LineDirection.Horizontal;\n to.y = from.y;\n if (from.x > to.x) {\n const temp = from;\n from = to;\n to = temp;\n }\n this.length = to.x - from.x;\n }\n else if (Math.abs(from.x - to.x) < Shape.tolerance) {\n this.direction = LineDirection.Vertical;\n to.x = from.x;\n if (from.y > to.y) {\n const temp = from;\n from = to;\n to = temp;\n }\n this.length = to.y - from.y;\n }\n this.from = from;\n this.to = to;\n }\n _valid = undefined;\n get valid() {\n if (this._valid === undefined) {\n this._valid = this.direction !== LineDirection.None && this.length > Shape.tolerance;\n }\n return this._valid;\n }\n get normalized() {\n if (this.direction === LineDirection.Horizontal) {\n return new Line(new Point(this.from.x - Shape.tolerance, this.from.y), new Point(this.to.x + Shape.tolerance, this.from.y));\n }\n else if (this.direction === LineDirection.Vertical) {\n return new Line(new Point(this.from.x, this.from.y - Shape.tolerance), new Point(this.from.x, this.to.y + Shape.tolerance));\n }\n return this;\n }\n addGap(line) {\n this.gaps.push(line);\n }\n containsPoint(p) {\n if (this.direction === LineDirection.Vertical) {\n return this.from.x === p.x && p.y >= this.from.y && p.y <= this.to.y;\n }\n else if (this.direction === LineDirection.Horizontal) {\n return this.from.y === p.y && p.x >= this.from.x && p.x <= this.to.x;\n }\n return false;\n }\n // // todo implement\n // public containsLine(l:Line):boolean{\n // if(this.direction === LineDirection.Vertical && l.direction === LineDirection.Vertical){\n // return this.from.x === l.from.x\n // }\n // else if(this.direction === LineDirection.Horizontal && l.direction === LineDirection.Horizontal){\n // return this.from.y === l.from.y\n // }\n // return false\n // }\n addIntersectionPoint(point) {\n for (const intPoint of this.intersections) {\n if (intPoint.equal(point))\n return;\n }\n this.intersections.push(point);\n }\n intersection(line) {\n let result;\n if (!this.valid || !line.valid) {\n return result;\n }\n const thisNormalized = this.normalized;\n const lineNormalized = line.normalized;\n if (this.direction === LineDirection.Horizontal && line.direction === LineDirection.Vertical) {\n const x = lineNormalized.from.x;\n const y = thisNormalized.from.y;\n const isOk = x > thisNormalized.from.x && x < thisNormalized.to.x && y > lineNormalized.from.y && y < lineNormalized.to.y;\n if (isOk) {\n const intPoint = new Point(x, y);\n this.addIntersectionPoint(intPoint);\n line.addIntersectionPoint(intPoint);\n result = intPoint;\n }\n }\n else if (this.direction === LineDirection.Vertical && line.direction === LineDirection.Horizontal) {\n const x = thisNormalized.from.x;\n const y = lineNormalized.from.y;\n const isOk = x > lineNormalized.from.x && x < lineNormalized.to.x && y > thisNormalized.from.y && y < thisNormalized.to.y;\n if (isOk) {\n const intPoint = new Point(x, y);\n this.addIntersectionPoint(intPoint);\n line.addIntersectionPoint(intPoint);\n result = intPoint;\n }\n }\n // if(result){\n // for (const gapLine of this.gaps) {\n // if(gapLine.containsPoint(result)) return undefined\n // }\n //\n // for (const gapLine of line.gaps) {\n // if(gapLine.containsPoint(result)) return undefined\n // }\n // }\n return result;\n }\n transform(matrix) {\n const p1 = this.from.transform(matrix);\n const p2 = this.to.transform(matrix);\n const x = Math.min(p1.x, p2.x);\n const y = Math.min(p1.y, p2.y);\n const width = Math.abs(p1.x - p2.x);\n const height = Math.abs(p1.y - p2.y);\n this.from = new Point(x, y);\n this.to = new Point(x + width, y + height);\n this.init();\n return this;\n }\n}\n//# sourceMappingURL=Line.js.map",
|
|
11
|
+
"export class TableData {\n minXY;\n maxXY;\n rows;\n rowPivots;\n colPivots;\n constructor(minXY, maxXY, rowPivots, colPivots) {\n this.minXY = minXY;\n this.maxXY = maxXY;\n this.rows = [];\n this.rowPivots = rowPivots;\n this.colPivots = colPivots;\n }\n findCell(x, y) {\n if (x >= this.minXY.x && y >= this.minXY.y && x <= this.maxXY.x && y <= this.maxXY.y) {\n for (const row of this.rows) {\n for (const cell of row) {\n if (cell.minXY.x <= x && cell.minXY.y <= y && cell.maxXY.x >= x && cell.maxXY.y >= y) {\n return cell;\n }\n }\n }\n }\n return undefined;\n }\n get cellCount() {\n return this.rows.reduce((acc, row) => acc + row.length, 0);\n }\n get rowCount() {\n return this.rows.length;\n }\n check() {\n // const cellCounts:Array<number> = []\n //\n // for (const row of this.rows) {\n // let cellNum = 0\n // for (const cell of row) {\n // cellNum += cell.colspan || 1\n // }\n // cellCounts.push(cellNum)\n // }\n //\n // for (let i = 1; i < cellCounts.length; i++) {\n // if (cellCounts[i] !== cellCounts[i - 1]) {\n // return false\n // }\n // }\n const virtualCellCount = (this.colPivots.length - 1) * (this.rowPivots.length - 1);\n let allCellCount = 0;\n for (const row of this.rows) {\n for (const cell of row) {\n const count = (cell.colspan || 1) * (cell.rowspan || 1);\n allCellCount += count;\n }\n }\n if (virtualCellCount !== allCellCount) {\n return false;\n }\n return true;\n }\n toArray() {\n const tableArr = [];\n for (const row of this.rows) {\n const rowArr = [];\n for (const cell of row) {\n let text = cell.text.join('');\n text = text.replace(/^[\\s]+|[\\s]+$/g, '');\n text = text.trim();\n rowArr.push(text);\n }\n tableArr.push(rowArr);\n }\n return tableArr;\n }\n}\n//# sourceMappingURL=TableData.js.map",
|
|
12
|
+
"import { Line, LineDirection } from './Line.js';\nimport { Point } from './Point.js';\nimport { Shape } from './Shape.js';\nimport { TableData } from './TableData.js';\nexport class Table {\n hLines = [];\n vLines = [];\n constructor(line) {\n if (line.direction === LineDirection.Horizontal) {\n this.hLines.push(line);\n }\n else if (line.direction === LineDirection.Vertical) {\n this.vLines.push(line);\n }\n }\n get isValid() {\n return this.hLines.length + this.vLines.length > 4;\n }\n get rowPivots() {\n const rowSet = new Set();\n for (const line of this.hLines) {\n rowSet.add(line.from.y);\n }\n return [...rowSet].sort((a, b) => a - b);\n }\n get colPivots() {\n const colSet = new Set();\n for (const line of this.vLines) {\n colSet.add(line.from.x);\n }\n return [...colSet].sort((a, b) => a - b);\n }\n add(line) {\n const hasIntersection = this.intersection(line);\n if (hasIntersection) {\n if (line.direction === LineDirection.Horizontal) {\n this.hLines.push(line);\n return true;\n }\n else if (line.direction === LineDirection.Vertical) {\n this.vLines.push(line);\n return true;\n }\n }\n return false;\n }\n intersection(line) {\n let flag = false;\n if (!line.valid)\n return flag;\n if (line.direction === LineDirection.Horizontal) {\n for (const vLine of this.vLines) {\n const p = line.intersection(vLine);\n if (p) {\n flag = true;\n }\n }\n }\n else if (line.direction === LineDirection.Vertical) {\n for (const hLine of this.hLines) {\n const p = line.intersection(hLine);\n if (p) {\n flag = true;\n }\n }\n }\n return flag;\n }\n getSameHorizontal(line) {\n const same = [line];\n const other = [];\n while (this.hLines.length > 0) {\n const hLine = this.hLines.shift();\n if (!hLine)\n continue;\n if (hLine.from.y === line.from.y) {\n same.push(hLine);\n }\n else {\n other.push(hLine);\n }\n }\n this.hLines = other;\n return same;\n }\n getSameVertical(line) {\n const same = [line];\n const other = [];\n while (this.vLines.length > 0) {\n const vLine = this.vLines.shift();\n if (!vLine)\n continue;\n if (vLine.from.x === line.from.x) {\n same.push(vLine);\n }\n else {\n other.push(vLine);\n }\n }\n this.vLines = other;\n return same;\n }\n mergeHorizontalLines(lines) {\n lines.sort((l1, l2) => l1.from.x - l2.from.x);\n const minX = lines[0].from.x;\n const maxX = lines[lines.length - 1].to.x;\n const resultLine = new Line(new Point(minX, lines[0].from.y), new Point(maxX, lines[0].from.y));\n for (let i = 1; i < lines.length; i++) {\n const prevLine = lines[i - 1];\n const currLine = lines[i];\n if (Math.abs(prevLine.to.x - currLine.from.x) > Shape.tolerance) {\n const gapLine = new Line(new Point(prevLine.to.x, prevLine.from.y), new Point(currLine.from.x, currLine.from.y));\n resultLine.addGap(gapLine);\n }\n }\n return resultLine;\n }\n mergeVerticalLines(lines) {\n lines.sort((l1, l2) => l1.from.y - l2.from.y);\n const minY = lines[0].from.y;\n const maxY = lines[lines.length - 1].to.y;\n const resultLine = new Line(new Point(lines[0].from.x, minY), new Point(lines[0].from.x, maxY));\n for (let i = 1; i < lines.length; i++) {\n const prevLine = lines[i - 1];\n const currLine = lines[i];\n if (Math.abs(prevLine.to.y - currLine.from.y) > Shape.tolerance) {\n const gapLine = new Line(new Point(prevLine.to.x, prevLine.to.y), new Point(prevLine.to.x, currLine.from.y));\n resultLine.addGap(gapLine);\n }\n }\n return resultLine;\n }\n normalize() {\n this.hLines = this.hLines.filter((l) => l.intersections.length > 1);\n this.vLines = this.vLines.filter((l) => l.intersections.length > 1);\n this.hLines.sort((l1, l2) => l1.from.y - l2.from.y);\n this.vLines.sort((l1, l2) => l1.from.x - l2.from.x);\n const newHLines = [];\n while (this.hLines.length > 0) {\n const line = this.hLines.shift();\n if (!line)\n continue;\n const lines = this.getSameHorizontal(line);\n const merged = this.mergeHorizontalLines(lines);\n newHLines.push(merged);\n }\n this.hLines = newHLines;\n const newVLines = [];\n while (this.vLines.length > 0) {\n const line = this.vLines.shift();\n if (!line)\n continue;\n const lines = this.getSameVertical(line);\n const merged = this.mergeVerticalLines(lines);\n newVLines.push(merged);\n }\n this.vLines = newVLines;\n }\n verticalExists(line, y1, y2) {\n if (line.direction !== LineDirection.Vertical) {\n throw new Error('Line is not vertical');\n }\n if (y1 >= y2) {\n throw new Error('y1 must be less than y2');\n }\n if (line.from.y <= y1 && line.to.y >= y2) {\n for (const gap of line.gaps) {\n if (gap.from.y <= y1 && gap.to.y >= y2) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n horizontalExists(line, x1, x2) {\n if (line.direction !== LineDirection.Horizontal) {\n throw new Error('Line is not horizontal');\n }\n if (x1 >= x2) {\n throw new Error('x1 must be less than x2');\n }\n if (line.from.x <= x1 && line.to.x >= x2) {\n for (const gap of line.gaps) {\n if (gap.from.x <= x1 && gap.to.x >= x2) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n findBottomLineIndex(h2Index, xMiddle) {\n for (let i = h2Index; i < this.hLines.length; i++) {\n const hLine = this.hLines[i];\n if (hLine.from.x <= xMiddle && hLine.to.x >= xMiddle) {\n return i;\n }\n }\n return -1;\n }\n findVerticalLineIndexs(topHLine, yMiddle) {\n const result = [];\n for (let i = 0; i < this.vLines.length; i++) {\n const vLine = this.vLines[i];\n if (vLine.from.y <= yMiddle && vLine.to.y >= yMiddle && topHLine.intersection(vLine)) {\n result.push(i);\n }\n }\n return result;\n }\n getRow(h1Index, h2Index, yMiddle) {\n const tableRow = [];\n //const colCount = this.vLines.length -1\n const topHLine = this.hLines[h1Index];\n const vLineIndexes = this.findVerticalLineIndexs(topHLine, yMiddle);\n for (let i = 1; i < vLineIndexes.length; i++) {\n const leftVLine = this.vLines[vLineIndexes[i - 1]];\n const rightVLine = this.vLines[vLineIndexes[i]];\n const xMiddle = (leftVLine.from.x + rightVLine.from.x) / 2;\n const bottomHLineIndex = this.findBottomLineIndex(h2Index, xMiddle);\n const bottomHLine = this.hLines[bottomHLineIndex];\n // minXY: {x:leftVLine.from.x,y:topHLine.from.y},\n // maxXY: {x:rightVLine.from.x,y:bottomHLine.from.y},\n const tableCell = {\n minXY: new Point(leftVLine.from.x, topHLine.from.y),\n maxXY: new Point(rightVLine.from.x, bottomHLine.from.y),\n width: rightVLine.from.x - leftVLine.from.x,\n height: bottomHLine.from.y - topHLine.from.y,\n text: [],\n };\n const colSpan = vLineIndexes[i] - vLineIndexes[i - 1];\n const rowSpan = bottomHLineIndex - h1Index;\n if (colSpan > 1) {\n tableCell.colspan = colSpan;\n }\n if (rowSpan > 1) {\n tableCell.rowspan = rowSpan;\n }\n tableRow.push(tableCell);\n }\n return tableRow;\n }\n toData() {\n const rowPivots = this.rowPivots;\n const colPivots = this.colPivots;\n const minXY = new Point(colPivots[0], rowPivots[0]);\n const maxXY = new Point(colPivots[colPivots.length - 1], rowPivots[rowPivots.length - 1]);\n const result = new TableData(minXY, maxXY, rowPivots, colPivots);\n for (let h1 = 1; h1 < this.hLines.length; h1++) {\n const prevHLine = this.hLines[h1 - 1];\n const currHLine = this.hLines[h1];\n const YMiddle = (prevHLine.from.y + currHLine.from.y) / 2;\n const rowData = this.getRow(h1 - 1, h1, YMiddle);\n result.rows.push(rowData);\n }\n return result;\n }\n}\n//# sourceMappingURL=Table.js.map",
|
|
13
|
+
"import { Line, LineDirection } from './Line.js';\nimport { Point } from './Point.js';\nimport { Shape } from './Shape.js';\nimport { Table } from './Table.js';\nexport class LineStore {\n hLines = [];\n vLines = [];\n add(line) {\n if (line.valid) {\n if (line.direction === LineDirection.Horizontal) {\n this.hLines.push(line);\n }\n else if (line.direction === LineDirection.Vertical) {\n this.vLines.push(line);\n }\n }\n }\n addRectangle(rect) {\n for (const line of rect.getLines()) {\n this.add(line);\n }\n }\n getTableData() {\n const result = [];\n const tables = this.getTables();\n for (const table of tables) {\n const data = table.toData();\n if (data) {\n result.push(data);\n }\n }\n return result;\n }\n getTables() {\n const result = [];\n while (this.hLines.length !== 0) {\n const hLine = this.hLines.shift();\n if (!hLine)\n continue;\n const filled = this.tryFill(result, hLine);\n if (filled)\n continue;\n const table = new Table(hLine);\n this.fillTable(table);\n result.push(table);\n }\n while (this.vLines.length !== 0) {\n const vLine = this.vLines.shift();\n if (!vLine)\n continue;\n const filled = this.tryFill(result, vLine);\n if (filled)\n continue;\n const table = new Table(vLine);\n this.fillTable(table);\n result.push(table);\n }\n const validTables = result.filter((t) => t.isValid);\n for (const table of validTables) {\n table.normalize();\n }\n return validTables;\n }\n normalize() {\n this.normalizeHorizontal();\n this.normalizeVertical();\n }\n normalizeHorizontal() {\n this.hLines.sort((l1, l2) => l1.from.y - l2.from.y);\n const newLines = [];\n let sameY = [];\n for (const line of this.hLines) {\n if (sameY.length === 0) {\n sameY.push(line);\n }\n else if (Math.abs(sameY[0]?.from.y - line.from.y) < Shape.tolerance) {\n sameY.push(line);\n }\n else {\n const merged = this.margeHorizontalLines(sameY);\n newLines.push(...merged);\n sameY = [line];\n }\n }\n if (sameY.length > 0) {\n const merged = this.margeHorizontalLines(sameY);\n newLines.push(...merged);\n }\n this.hLines = newLines;\n }\n normalizeVertical() {\n this.vLines.sort((l1, l2) => l1.from.x - l2.from.x);\n const newLines = [];\n let sameX = [];\n for (const line of this.vLines) {\n if (sameX.length === 0) {\n sameX.push(line);\n }\n else if (Math.abs(sameX[0]?.from.x - line.from.x) < Shape.tolerance) {\n sameX.push(line);\n }\n else {\n const merged = this.margeVerticalLines(sameX);\n newLines.push(...merged);\n sameX = [line];\n }\n }\n if (sameX.length > 0) {\n const merged = this.margeVerticalLines(sameX);\n newLines.push(...merged);\n }\n this.vLines = newLines;\n }\n fillTable(table) {\n const newVLines = [];\n const newHLines = [];\n for (const vLine of this.vLines) {\n if (!table.add(vLine)) {\n newVLines.push(vLine);\n }\n }\n for (const hLine of this.hLines) {\n if (!table.add(hLine)) {\n newHLines.push(hLine);\n }\n }\n this.hLines = newHLines;\n this.vLines = newVLines;\n }\n tryFill(tables, line) {\n for (const table of tables) {\n if (table.add(line)) {\n this.fillTable(table);\n return true;\n }\n }\n return false;\n }\n margeHorizontalLines(sameYLines) {\n const result = [];\n sameYLines.sort((l1, l2) => l1.from.x - l2.from.x);\n const sameY = sameYLines[0]?.from.y;\n if (sameY === undefined)\n return result;\n let minX = Number.MAX_SAFE_INTEGER;\n let maxX = Number.MIN_SAFE_INTEGER;\n for (const line of sameYLines) {\n if (line.from.x - maxX < Shape.tolerance) {\n if (line.from.x < minX) {\n minX = line.from.x;\n }\n if (line.to.x > maxX) {\n maxX = line.to.x;\n }\n }\n else {\n if (maxX > minX) {\n result.push(new Line(new Point(minX, sameY), new Point(maxX, sameY)));\n }\n minX = line.from.x;\n maxX = line.to.x;\n }\n }\n const last = result[result.length - 1];\n if (last) {\n if (last.from.x !== minX && last.to.x !== maxX) {\n result.push(new Line(new Point(minX, sameY), new Point(maxX, sameY)));\n }\n }\n else {\n result.push(new Line(new Point(minX, sameY), new Point(maxX, sameY)));\n }\n return result;\n }\n margeVerticalLines(sameXLines) {\n const result = [];\n sameXLines.sort((l1, l2) => l1.from.y - l2.from.y);\n const sameX = sameXLines[0]?.from.x;\n if (sameX === undefined)\n return result;\n let minY = Number.MAX_SAFE_INTEGER;\n let maxY = Number.MIN_SAFE_INTEGER;\n for (const line of sameXLines) {\n if (line.from.y - maxY < Shape.tolerance) {\n if (line.from.y < minY) {\n minY = line.from.y;\n }\n if (line.to.y > maxY) {\n maxY = line.to.y;\n }\n }\n else {\n if (maxY > minY) {\n result.push(new Line(new Point(sameX, minY), new Point(sameX, maxY)));\n }\n minY = line.from.y;\n maxY = line.to.y;\n }\n }\n const last = result[result.length - 1];\n if (last) {\n if (last.from.y !== minY && last.to.y !== maxY) {\n result.push(new Line(new Point(sameX, minY), new Point(sameX, maxY)));\n }\n }\n else {\n result.push(new Line(new Point(sameX, minY), new Point(sameX, maxY)));\n }\n return result;\n }\n}\n//# sourceMappingURL=LineStore.js.map",
|
|
14
|
+
"import { Line } from './Line.js';\nimport { Point } from './Point.js';\nimport { Shape } from './Shape.js';\nexport class Rectangle extends Shape {\n from;\n width;\n height;\n constructor(from, width, height) {\n super();\n this.from = from;\n this.width = width;\n this.height = height;\n }\n get to() {\n return new Point(this.from.x + this.width, this.from.y + this.height);\n }\n getLines() {\n const to = this.to;\n const lines = [\n new Line(this.from, new Point(to.x, this.from.y)),\n new Line(this.from, new Point(this.from.x, to.y)),\n new Line(new Point(to.x, this.from.y), to),\n new Line(new Point(this.from.x, to.y), to),\n ];\n return lines.filter((l) => l.valid);\n }\n transform(matrix) {\n const p1 = Shape.applyTransform([this.from.x, this.from.y], matrix);\n const p2 = Shape.applyTransform([this.from.x + this.width, this.from.y + this.height], matrix);\n const x = Math.min(p1[0], p2[0]);\n const y = Math.min(p1[1], p2[1]);\n const width = Math.abs(p1[0] - p2[0]);\n const height = Math.abs(p1[1] - p2[1]);\n this.from = new Point(x, y);\n this.width = width;\n this.height = height;\n return this;\n }\n}\n//# sourceMappingURL=Rectangle.js.map",
|
|
15
|
+
"/**\n * @public\n * ImageResult\n * Helper container for extracted images grouped per page.\n */\nexport class ImageResult {\n pages = [];\n total = 0;\n getPageImage(num, name) {\n for (const pageData of this.pages) {\n if (pageData.pageNumber === num) {\n for (const img of pageData.images) {\n if (img.name === name) {\n return img;\n }\n }\n }\n }\n return null;\n }\n constructor(total) {\n this.total = total;\n }\n}\n//# sourceMappingURL=ImageResult.js.map",
|
|
16
|
+
"import * as pdfjs from 'pdfjs-dist/legacy/build/pdf.mjs';\nconst XMP_DATE_PROPERTIES = [\n 'xmp:createdate',\n 'xmp:modifydate',\n 'xmp:metadatadate',\n 'xap:createdate',\n 'xap:modifydate',\n 'xap:metadatadate',\n];\n/**\n * @public\n * Aggregated information about a PDF document returned by getInfo().\n * The object contains high-level metadata, outline/bookmark structure,\n * per-page extracted hyperlinks and utility helpers for parsing dates.\n */\nexport class InfoResult {\n // Total number of pages in the PDF document (count of physical pages).\n total;\n /**\n * The PDF 'Info' dictionary. Typical fields include title, author, subject,\n * Creator, Producer and Creation/Modification dates. The exact structure is\n * determined by the PDF and as returned by PDF.js.\n */\n // biome-ignore lint/suspicious/noExplicitAny: <unsupported underline type>\n info;\n // Low-level document metadata object (XMP). Use this to access extended\n // properties that are not present in the Info dictionary.\n metadata;\n /**\n * An array of document fingerprint strings provided by PDF.js. Useful\n * for caching, de-duplication or identifying a document across runs.\n */\n fingerprints;\n /**\n * Permission flags for the document as returned by PDF.js (or null).\n * These flags indicate capabilities such as printing, copying and\n * other restrictions imposed by the PDF security settings.\n */\n permission;\n /**\n * Optional document outline (bookmarks). When present this is the\n * hierarchical navigation structure which viewers use for quick access.\n */\n outline;\n // Results with per-page hyperlink extraction. Empty array by default.\n pages = [];\n /**\n * Collects dates from different sources (Info dictionary and XMP/XAP metadata)\n * and returns them as a DateNode where available. This helps callers compare\n * and choose the most relevant timestamp (for example a creation date vs XMP date).\n */\n getDateNode() {\n const result = {};\n // The Info dictionary may contain CreationDate/ModDate in PDF date string format.\n // biome-ignore lint/suspicious/noExplicitAny: <unsupported underline type>\n const CreationDate = this.info?.CreationDate;\n if (CreationDate) {\n result.CreationDate = pdfjs.PDFDateString.toDateObject(CreationDate);\n }\n // biome-ignore lint/suspicious/noExplicitAny: <unsupported underline type>\n const ModDate = this.info?.ModDate;\n if (ModDate) {\n result.ModDate = pdfjs.PDFDateString.toDateObject(ModDate);\n }\n // If no XMP metadata is present, return the Info-based dates only.\n if (!this.metadata) {\n return result;\n }\n // Extract several XMP/XAP date properties (if present) and attempt to\n // parse them as ISO-like strings. Parsed values are added to the\n // corresponding DateNode fields.\n for (const prop of XMP_DATE_PROPERTIES) {\n const value = this.metadata?.get(prop);\n const date = this.parseISODateString(value);\n switch (prop) {\n case XMP_DATE_PROPERTIES[0]:\n result.XmpCreateDate = date;\n break;\n case XMP_DATE_PROPERTIES[1]:\n result.XmpModifyDate = date;\n break;\n case XMP_DATE_PROPERTIES[2]:\n result.XmpMetadataDate = date;\n break;\n case XMP_DATE_PROPERTIES[3]:\n result.XapCreateDate = date;\n break;\n case XMP_DATE_PROPERTIES[4]:\n result.XapModifyDate = date;\n break;\n case XMP_DATE_PROPERTIES[5]:\n result.XapMetadataDate = date;\n break;\n }\n }\n return result;\n }\n /**\n * Try to parse an ISO-8601 date string from XMP/XAP metadata. If the\n * value is falsy or cannot be parsed, undefined is returned to indicate\n * absence or unparsable input.\n */\n parseISODateString(isoDateString) {\n if (!isoDateString)\n return undefined;\n const parsedDate = Date.parse(isoDateString);\n if (!Number.isNaN(parsedDate)) {\n return new Date(parsedDate);\n }\n return undefined;\n }\n constructor(total) {\n this.total = total;\n }\n}\n//# sourceMappingURL=InfoResult.js.map",
|
|
17
|
+
"export function setDefaultParseParameters(params) {\n params.lineThreshold = params?.lineThreshold ?? 4.6;\n params.cellThreshold = params?.cellThreshold ?? 7;\n params.cellSeparator = params?.cellSeparator ?? '\\t';\n params.lineEnforce = params?.lineEnforce ?? true;\n params.pageJoiner = params?.pageJoiner ?? '\\n-- page_number of total_number --';\n params.imageThreshold = params?.imageThreshold ?? 80;\n params.imageDataUrl = params?.imageDataUrl ?? true;\n params.imageBuffer = params?.imageBuffer ?? true;\n params.scale = params?.scale ?? 1;\n return params;\n}\n//# sourceMappingURL=ParseParameters.js.map",
|
|
18
|
+
"export var PathGeometry;\n(function (PathGeometry) {\n PathGeometry[PathGeometry[\"undefined\"] = 0] = \"undefined\";\n PathGeometry[PathGeometry[\"hline\"] = 1] = \"hline\";\n PathGeometry[PathGeometry[\"vline\"] = 2] = \"vline\";\n PathGeometry[PathGeometry[\"rectangle\"] = 3] = \"rectangle\";\n})(PathGeometry || (PathGeometry = {}));\nexport var DrawOPS;\n(function (DrawOPS) {\n DrawOPS[DrawOPS[\"moveTo\"] = 0] = \"moveTo\";\n DrawOPS[DrawOPS[\"lineTo\"] = 1] = \"lineTo\";\n DrawOPS[DrawOPS[\"curveTo\"] = 2] = \"curveTo\";\n DrawOPS[DrawOPS[\"closePath\"] = 3] = \"closePath\";\n DrawOPS[DrawOPS[\"rectangle\"] = 4] = \"rectangle\";\n})(DrawOPS || (DrawOPS = {}));\n//# sourceMappingURL=PathGeometry.js.map",
|
|
19
|
+
"/**\n * @public\n * ScreenshotResult\n */\nexport class ScreenshotResult {\n pages = [];\n total = 0;\n constructor(total) {\n this.total = total;\n }\n}\n//# sourceMappingURL=ScreenshotResult.js.map",
|
|
20
|
+
"/**\n * @public\n * TableResult\n */\nexport class TableResult {\n pages = [];\n mergedTables = [];\n total = 0;\n constructor(total) {\n this.total = total;\n }\n}\n//# sourceMappingURL=TableResult.js.map",
|
|
21
|
+
"/**\n * @public\n * TextResult\n */\nexport class TextResult {\n pages = [];\n text = '';\n total = 0;\n getPageText(num) {\n for (const pageData of this.pages) {\n if (pageData.num === num)\n return pageData.text;\n }\n return '';\n }\n constructor(total) {\n this.total = total;\n }\n}\n//# sourceMappingURL=TextResult.js.map",
|
|
22
|
+
"import { PDFParse } from './PDFParse.js';\nexport { VerbosityLevel } from 'pdfjs-dist/legacy/build/pdf.mjs';\nexport * from './Exception.js';\nexport * from './geometry/index.js';\nexport { PDFParse };\n//# sourceMappingURL=index.js.map",
|
|
6
23
|
"import type { Plugin } from \"@elizaos/core\";\nimport { PdfService } from \"./services/pdf\";\n\nexport * from \"./services\";\nexport * from \"./types\";\n\nexport const pdfPlugin: Plugin = {\n name: \"pdf\",\n description: \"Plugin for PDF reading and text extraction\",\n services: [PdfService],\n actions: [],\n};\n\nexport default pdfPlugin;\n"
|
|
7
24
|
],
|
|
8
|
-
"mappings": "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",
|
|
9
|
-
"debugId": "
|
|
25
|
+
"mappings": "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",
|
|
26
|
+
"debugId": "11EC03194FE63DF364756E2164756E21",
|
|
10
27
|
"names": []
|
|
11
28
|
}
|