import { PDFVersion } from './util'; import { DocumentHistory, ObjectLookupTable, XRef } from './document-history'; import { CryptoEngine, CryptoConfiguration } from './crypto'; /** * Note that this parser does not parses the PDF file completely. It lookups those * parts that are important for the creation of annotations. For more information * please read the README. * */ export interface Color { r: number; g: number; b: number; } export interface Border { horizontal_corner_radius: number; vertical_corner_radius: number; border_width: number; dash_patter?: number[]; } /** * References in PDF documens are of the form * R * * This holds such a reference * */ export interface ReferencePointer { obj: number; generation: number; reused?: boolean | undefined; } export declare class Annotation { private data; private cryptoInterface; page: number; type: string; object_id: ReferencePointer | undefined; id: string; rect: number[]; author: string; pageReference: Page | undefined; updateDate: string; contents?: string; annotation_flag?: number; appearance_dictionary?: any; appearance_state?: any; border?: Border | undefined; color?: Color | undefined; fill?: Color | undefined; opacity?: number; richtext?: string; initiallyOpen?: boolean; iconName?: string; annotationState?: string; stateModel?: string; defaultAppearance?: string; textAlignment?: string; richTextString?: string; calloutLine?: number[]; intent?: string; borderEffect?: any; rd?: any; borderStyle?: any; lineEnding?: string; stampType?: string; caretSymbol?: string; quadPoints?: number[]; inkList?: number[][]; border_style?: any; color_space?: number[]; border_effect?: any; vertices?: number[]; line_ending?: string[]; interior_color?: number[]; measure?: any; is_deleted?: boolean; constructor(data?: Uint8Array, cryptoInterface?: CryptoInterface); /** * Extract the annotation object (partially) * */ extract(xref: XRef, page: Page, objectLookupTable: ObjectLookupTable): void; } /** * Represents the Catalog object of the PDF document * */ export declare class CatalogObject { private data; private xref; private objectLookupTable; /** * Extracts the data representing the object. * */ constructor(data: Uint8Array, xref: XRef, objectLookupTable: ObjectLookupTable); private pagesObjectId; getPagesObjectId(): ReferencePointer; } /** * Represents the PageTree object of the PDF document * This is the object with /Type /Pages * */ export declare class PageTree { private data; private objectLookupTable; private pageCount; private pageReferences; private visitedPages; constructor(data: Uint8Array, objectLookupTable: ObjectLookupTable); /** * Extracts the kids references recursively. * For every kid it checks if the referenced object type is: * - a /Pages object then it recursively lookups its children * - a /Page object then it adds the references * */ extractPageReferences(references: ReferencePointer[]): void; /** * Extract the object data at the given pointer * */ extract(xref: XRef, objectLookupTable: ObjectLookupTable): void; /** * Returns the number of pages the page tree comprises * */ getPageCount(): number; /** * Returns the reference to the page objects * */ getPageReferences(): ReferencePointer[]; } /** * Represents a page object in the PDF document * */ export declare class Page { private data; private documentHistory; object_id: ReferencePointer | undefined; annots: ReferencePointer[]; hasAnnotsField: boolean; annotsPointer: ReferencePointer | undefined; constructor(data: Uint8Array, documentHistory: DocumentHistory); /** * Extracts the references in the linked annotations array * */ extractAnnotationArray(): void; /** * Extracts the page object starting at position ptr * */ extract(xref: XRef, objectLookupTable: ObjectLookupTable): void; } /** * Provides a configured interface to handle the encryption and decryption of PDFs * */ export declare class CryptoInterface { private data?; private documentHistory?; private ref_ptr?; cryptoConfiguration: CryptoConfiguration; cryptoEngine: CryptoEngine; constructor(data?: Uint8Array | undefined, documentHistory?: DocumentHistory | undefined, ref_ptr?: XRef | undefined, user_pwd?: string, owner_pwd?: string); /** * Returns the reference pointer * */ getEncryptionDictReference(): ReferencePointer | undefined; encrypt(data: Uint8Array, reference: ReferencePointer | undefined): Uint8Array; decrypt(data: Uint8Array, reference: ReferencePointer | undefined): Uint8Array; isUserPasswordCorrect(): boolean; isOwnerPasswordCorrect(): boolean; /** * Extracts the enrcyption dictionary * */ extractEncryptionDictionary(ptr: XRef): void; } /** * Parses the relevant parts of the PDF document and provides functionality to extract the necessary information for * adding annotations * */ export declare class PDFDocumentParser { private data; private version; documentHistory: DocumentHistory; private catalogObject; private pageTree; private cryptoInterface; constructor(data: Uint8Array, userpwd?: string, ownerpwd?: string); /** * Returns the crypto interface * */ getCryptoInterface(): CryptoInterface; /** * Returns the major and minor version of the pdf document * */ getPDFVersion(): PDFVersion; /** * Returns a free object id. It first checks wether there can be an freed object id reused. If that is not the case * it creates a new one * */ getFreeObjectId(): ReferencePointer; /** * Returns the catalog object of the PDF file * */ getCatalog(): CatalogObject; /** * Returns the latest version of the page tree object of the document * */ getPageTree(): PageTree; /** * Returns the latest version of the page with the given pageNumber * */ getPage(pageNumber: number): Page; /** * Returns the annotations that exist in the document * */ extractAnnotations(): Annotation[][]; }