import * as _napi_rs_canvas from '@napi-rs/canvas'; import { Canvas, CanvasRenderingContext2D } from '@napi-rs/canvas'; import { DocumentInitParameters, PDFDocumentProxy } from './types/src/display/api'; import * as pdfjs_dist_types_src_display_metadata from './types/src/display/metadata'; import * as PDFJS from './types/src/pdf'; interface CanvasFactoryContext { canvas?: HTMLCanvasElement | Canvas; context?: CanvasRenderingContext2D | CanvasRenderingContext2D; } /** * Derived from the PDF.js project by the Mozilla Foundation. * @see https://github.com/mozilla/pdf.js/blob/b8de9a372f9bbf7e33adb362eeae5ef1919dba73/src/display/canvas_factory.js#L18 * @license Apache-2.0 */ declare class BaseCanvasFactory { #private; constructor({ enableHWA }?: { enableHWA?: boolean | undefined; }); create(width: number, height: number): { canvas: Canvas | HTMLCanvasElement; context: _napi_rs_canvas.SKRSContext2D | globalThis.CanvasRenderingContext2D | null; }; reset({ canvas }: CanvasFactoryContext, width: number, height: number): void; destroy(context: CanvasFactoryContext): void; _createCanvas(width: number, height: number): HTMLCanvasElement | Canvas; } /** * Derived from the PDF.js project by the Mozilla Foundation. * @see https://github.com/mozilla/pdf.js/blob/b8de9a372f9bbf7e33adb362eeae5ef1919dba73/src/display/canvas_factory.js#L18 * @license Apache-2.0 */ declare class DOMCanvasFactory extends BaseCanvasFactory { _document: Document; constructor({ ownerDocument, enableHWA }?: { ownerDocument?: Document | undefined; enableHWA?: boolean | undefined; }); _createCanvas(width: number, height: number): HTMLCanvasElement; } declare class NodeCanvasFactory extends BaseCanvasFactory { constructor({ enableHWA }?: { enableHWA?: boolean | undefined; }); _createCanvas(width: number, height: number): Canvas; } interface ExtractedImageObject { data: Uint8ClampedArray; width: number; height: number; channels: 1 | 3 | 4; key: string; } /** * Extracts images from a specific page of a PDF document, including necessary metadata, * such as width, height, and calculated color channels. * * @example * const imagesData = await extractImages(pdf, pageNum) * * for (const imgData of imagesData) { * const imageIndex = totalImagesProcessed + 1 * await sharp(imgData.data, { * raw: { width: imgData.width, height: imgData.height, channels: imgData.channels } * }) * .png() * .toFile(`${imageIndex}.png`) * } */ declare function extractImages$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, pageNumber: number): Promise; declare function renderPageAsImage$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, pageNumber: number, options?: { canvasImport?: () => Promise; /** @default 1.0 */ scale?: number; width?: number; height?: number; toDataURL?: false; }): Promise; declare function renderPageAsImage$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, pageNumber: number, options: { canvasImport?: () => Promise; /** @default 1.0 */ scale?: number; width?: number; height?: number; toDataURL: true; }): Promise; declare function createIsomorphicCanvasFactory(canvasImport?: () => Promise): Promise; declare function extractLinks$1(data: DocumentInitParameters['data'] | PDFDocumentProxy): Promise<{ totalPages: number; links: string[]; }>; declare function getMeta$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: { parseDates?: boolean; }): Promise<{ info: Record; metadata: pdfjs_dist_types_src_display_metadata.Metadata; }>; interface StructuredTextItem { /** Text content. */ str: string; /** X position in PDF coordinate space (origin: bottom-left). */ x: number; /** Y position in PDF coordinate space (origin: bottom-left). */ y: number; /** Width in device space. */ width: number; /** Height in device space. */ height: number; /** Font size derived from the transformation matrix. */ fontSize: number; /** Font family name. */ fontFamily: string; /** Text direction: `"ltr"`, `"rtl"`, or `"ttb"`. */ dir: string; /** Whether the text item is followed by a line break. */ hasEOL: boolean; } declare function extractTextItems$1(data: DocumentInitParameters['data'] | PDFDocumentProxy): Promise<{ totalPages: number; items: StructuredTextItem[][]; }>; declare function extractText$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options?: { mergePages?: false; }): Promise<{ totalPages: number; text: string[]; }>; declare function extractText$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, options: { mergePages: true; }): Promise<{ totalPages: number; text: string; }>; /** * By default, unpdf will use the latest version of PDF.js compiled for * serverless environments. If you want to use a different version, you can * provide a custom resolver function. * * @example * // Use the official PDF.js build (make sure to install it first) * import { definePDFJSModule } from 'unpdf' * * await definePDFJSModule(() => import('pdfjs-dist')) */ declare function definePDFJSModule(pdfjs: () => Promise): Promise; /** @deprecated Use `definePDFJSModule` instead. Will be removed in v2. */ declare function configureUnPDF(options: { pdfjs?: () => Promise; }): Promise; /** * Returns a PDFDocumentProxy instance from a given binary data. * * Applies the following defaults: * - `isEvalSupported: false` * - `useSystemFonts: true` * * In Node.js environments, additionally applies: * - `disableFontFace: true` * - `standardFontDataUrl` resolved from the local `pdfjs-dist` package */ declare function getDocumentProxy(data: DocumentInitParameters['data'], options?: DocumentInitParameters): Promise; declare function getResolvedPDFJS(): Promise; declare function resolvePDFJSImport(pdfjsResolver?: () => Promise, { reload }?: { reload?: boolean | undefined; }): Promise; declare const getMeta: typeof getMeta$1; declare const extractText: typeof extractText$1; declare const extractTextItems: typeof extractTextItems$1; declare const extractImages: typeof extractImages$1; declare const renderPageAsImage: typeof renderPageAsImage$1; declare const extractLinks: typeof extractLinks$1; export { configureUnPDF, createIsomorphicCanvasFactory, definePDFJSModule, extractImages, extractLinks, extractText, extractTextItems, getDocumentProxy, getMeta, getResolvedPDFJS, renderPageAsImage, resolvePDFJSImport }; export type { StructuredTextItem };