UNPKG

@syncfusion/ej2-pdf

Version:

Feature-rich JavaScript PDF library with built-in support for loading and manipulating PDF document.

420 lines (419 loc) 17.8 kB
import { _ExportHelper } from './xfdf-document'; import { PdfDocument } from './../pdf-document'; import { PdfAnnotation } from './../annotations/annotation'; import { _PdfDictionary } from './../pdf-primitives'; import { _PdfContentStream } from './../base-stream'; /** * Provides JSON based export and import utilities for annotations and form fields and manages serialization details. * * @private */ export declare class _JsonDocument extends _ExportHelper { /** * Indicates whether the document is being imported from JSON * instead of being exported to JSON. * * @private */ _isImport: boolean; /** * Indicates whether color-space values are included or processed * in the JSON structure. * * @private */ _isColorSpace: boolean; /** * Indicates whether duplicate fields or nodes have been detected * during JSON import/export operations. * * @private */ _isDuplicate: boolean; /** * Indicates whether grouping behavior is supported during * JSON export. * * @private */ _isGroupingSupport: boolean; /** * Initializes the JSON helper with optional file name for export context. * * @private * @param {string} [fileName] Source or target file name used in JSON payload. */ constructor(fileName?: string); /** * Prepares and exports annotations from the document as a JSON byte array. * * @private * @param {PdfDocument} document Source PDF document to read annotations. * @returns {Uint8Array} Generated JSON payload containing exported annotations. */ _exportAnnotations(document: PdfDocument): Uint8Array; /** * Prepares and exports form fields from the document as a JSON byte array. * * @private * @param {PdfDocument} document Source PDF document to read form fields. * @returns {Uint8Array} Generated JSON payload containing exported form fields. */ _exportFormFields(document: PdfDocument): Uint8Array; /** * Finalizes JSON serialization and returns the composed byte array. * * @private * @returns {Uint8Array} Serialized JSON data representing the current export. */ _save(): Uint8Array; /** * Writes accumulated form field entries into the JSON buffer using a flat key to value structure. * * @private * @returns {void} */ _writeFormFieldData(): void; /** * Iterates document pages collects exportable annotations and writes the JSON structure. * * @private * @param {PdfDocument} document Source document providing pages and annotations. * @param {number} pageCount Number of pages to process from the document. * @returns {void} */ _exportAnnotationData(document: PdfDocument, pageCount: number): void; /** * Extracts annotation properties and places them into the working table for JSON emission. * * @private * @param {PdfAnnotation} annotation Annotation to export. * @param {number} index Page index where the annotation resides. * @returns {void} */ _exportAnnotation(annotation: PdfAnnotation, index: number): void; /** * Walks a dictionary and writes supported attributes into the working table honoring appearance and page filters. * * @private * @param {_PdfDictionary} dictionary Dictionary to read properties from. * @param {number} pageIndex Page index used for appearance handling. * @param {boolean} hasAppearance Indicates whether appearance streams should be included. * @returns {void} */ _writeDictionary(dictionary: _PdfDictionary, pageIndex: number, hasAppearance: boolean): void; /** * Writes color related attributes into the working table optionally emitting a tagged numeric component. * * @private * @param {any} primitive Source color primitive array name or number. * @param {string} attribute Target attribute key to store the color string. * @param {string} [tag] Optional key for an additional numeric component. * @returns {void} */ _writeColor(primitive: any, attribute: string, tag?: string): void; /** * Writes a simple attribute string into the working table with optional lowercase normalization. * * @private * @param {string} attribute Target attribute key. * @param {any} primitive Source primitive value. * @param {boolean} [isLowerCase=false] When true converts the value to lowercase. * @returns {void} */ _writeAttributeString(attribute: string, primitive: any, isLowerCase?: boolean): void; /** * Maps a dictionary entry to one or more JSON attributes handling special cases and conversions. * * @private * @param {string} key Dictionary key being processed. * @param {any} primitive Source primitive value or reference. * @param {_PdfDictionary} dictionary Owning dictionary for lookups. * @returns {void} */ _writeAttribute(key: string, primitive: any, dictionary: _PdfDictionary): void; /** * Serializes vertices data into a compact string and stores it in the working table. * * @private * @param {_PdfDictionary} dictionary Dictionary containing the Vertices entry. * @returns {void} */ _writeVertices(dictionary: _PdfDictionary): void; /** * Serializes ink list data into JSON and stores it in the working table. * * @private * @param {_PdfDictionary} dictionary Dictionary containing the InkList entry. * @returns {void} */ _writeInkList(dictionary: _PdfDictionary): void; /** * Exports a measurement sub dictionary and stores it under the given key. * * @private * @param {_PdfDictionary} dictionary Target key name to store the formatted dictionary. * @returns {void} */ _exportMeasureDictionary(dictionary: _PdfDictionary): void; /** * Exports a measurement sub dictionary and stores it under the given key. * * @private * @param {string} key Target key name to store the formatted dictionary. * @param {_PdfDictionary} measurementDetails Source measurement details dictionary. * @returns {void} */ _exportMeasureFormatDetails(key: string, measurementDetails: _PdfDictionary): void; /** * Builds a JSON encoded appearance object from the appearance dictionary. * * @private * @param {_PdfDictionary} appearance Appearance dictionary to serialize. * @returns {Uint8Array} UTF8 encoded JSON bytes representing appearance content. */ _getAppearanceString(appearance: _PdfDictionary): Uint8Array; /** * Writes an appearance dictionary into a flat key to value map suitable for JSON serialization. * * @private * @param {Map<string, string>} table Destination table to receive serialized entries. * @param {_PdfDictionary} dictionary Source dictionary to traverse. * @returns {void} */ _writeAppearanceDictionary(table: Map<string, string>, dictionary: _PdfDictionary): void; /** * Writes a PDF primitive into table or array using a typed envelope and handles references and streams. * * @private * @param {Map<string, string>} [table] Destination table for dictionary context. * @param {any} [value] Primitive value to serialize. * @param {_PdfDictionary} [dictionary] Current dictionary for reference resolution. * @param {string} [key] Current key when writing into a table. * @param {Map<string, string>[]} [array] Destination array for array context. * @param {boolean} [isColorSpace=false] Marks color space processing mode for unicode handling. * @param {boolean} [isNewReference=false] Marks a newly created reference for image stream decisions. * @returns {void} */ _writeObject(table?: Map<string, string>, value?: any, dictionary?: _PdfDictionary, key?: string, array?: Map<string, string>[], isColorSpace?: boolean, isNewReference?: boolean): void; /** * Writes a single table entry or pushes into an array using a typed envelope. * * @private * @param {string} tableKey Envelope type key such as name int fixed boolean dict array stream string unicodeData null. * @param {string} value Serialized value to store. * @param {Map<string, string>} table Destination table for key based storage. * @param {string} key Entry key when targeting a table. * @param {Map<string, string>[]} array Destination array when targeting an array. * @returns {void} */ _writeTable(tableKey: string, value: string, table: Map<string, string>, key: string, array: Map<string, string>[]): void; /** * Serializes an array of primitives into typed envelopes and appends them to the destination array. * * @private * @param {Map<string, string>[]} array Destination array of typed entries. * @param {any[]} value Source array of primitives to serialize. * @param {_PdfDictionary} dictionary Current dictionary for reference resolution. * @param {boolean} [isColorSpace=false] Marks color space processing mode for unicode handling. * @returns {void} */ _writeArray(array: Map<string, string>[], value: any[], dictionary: _PdfDictionary, isColorSpace?: boolean): void; /** * Converts a table into a JSON object string preserving pre formatted values. * * @private * @param {Map<string, string>} table Source table to convert. * @returns {string} JSON string representing the table. */ _convertToJson(table: Map<string, string>): string; /** * Validates whether a string value is a well formed JSON array. * * @private * @param {string} value The string to validate as a JSON array. * @returns {boolean} True when the value is a valid JSON array, otherwise false. */ private _isValidJsonArray; /** * Converts an array of tables into a JSON array string. * * @private * @param {Map<string, string>[]} array Source array of tables. * @returns {string} JSON string representing the array of objects. */ _convertToJsonArray(array: Map<string, string>[]): string; /** * Parses a JSON byte array into a JavaScript value after trimming incomplete endings. * * @private * @param {PdfDocument} document Target document to initialize context. * @param {Uint8Array} data UTF8 encoded JSON bytes. * @returns {any} Parsed JSON value. */ _parseJson(document: PdfDocument, data: Uint8Array): any; /** * Imports form field values from a JSON byte array into the document form. * * @private * @param {PdfDocument} document Target PDF document to receive form values. * @param {Uint8Array} data UTF8 encoded JSON bytes with form entries. * @returns {void} */ _importFormData(document: PdfDocument, data: Uint8Array): void; /** * Imports annotations from a JSON byte array and adds them to the target document pages. * * @private * @param {PdfDocument} document Target PDF document to receive annotations. * @param {Uint8Array} data UTF8 encoded JSON bytes with annotation entries. * @returns {void} */ _importAnnotations(document: PdfDocument, data: Uint8Array): void; /** * Populates a new annotation dictionary from parsed JSON values and queues related streams and references. * * @private * @param {_PdfDictionary} dictionary Destination annotation dictionary to update. * @param {any} annotation Parsed annotation object. * @param {string[]} annotationKeys Keys present in the parsed annotation object. * @returns {void} */ _addAnnotationData(dictionary: _PdfDictionary, annotation: any, annotationKeys: string[]): void; /** * Parses a comma separated coordinate pair string and appends numeric values to the accumulator. * * @private * @param {string} value Comma separated coordinate pair. * @param {number[]} linePoints Accumulator receiving parsed numbers. * @returns {void} */ _addLinePoints(value: string, linePoints: number[]): void; /** * Updates a dictionary with a string value when present. * * @private * @param {_PdfDictionary} dictionary Destination dictionary to update. * @param {string} key Entry key to set. * @param {string} value String value to store. * @returns {void} */ _addString(dictionary: _PdfDictionary, key: string, value: string): void; /** * Updates a dictionary with a boolean value derived from a yes or true string. * * @private * @param {_PdfDictionary} dictionary Destination dictionary to update. * @param {string} key Entry key to set. * @param {string} value Source string representing a boolean. * @returns {void} */ _addBoolean(dictionary: _PdfDictionary, key: string, value: string): void; /** * Applies border style properties to border and effect dictionaries based on style width intensity and dashes. * * @private * @param {string} key Property key such as width intensity or dashes. * @param {any} value Source value to convert and set. * @param {_PdfDictionary} borderEffectDictionary Destination effect dictionary. * @param {_PdfDictionary} borderStyleDictionary Destination border style dictionary. * @returns {void} */ _addBorderStyle(key: string, value: any, borderEffectDictionary: _PdfDictionary, borderStyleDictionary: _PdfDictionary): void; /** * Parses a comma separated list into an array of floating point numbers. * * @private * @param {string} value Comma separated numeric list. * @returns {number[]} Array of parsed numbers. */ _parseFloatPoints(value: string): number[]; /** * Updates a dictionary with an array of numeric values when available. * * @private * @param {_PdfDictionary} dictionary Destination dictionary to update. * @param {string} key Entry key to set. * @param {number[]} value Numeric array to store. * @returns {void} */ _addFloatPoints(dictionary: _PdfDictionary, key: string, value: number[]): void; /** * Builds and attaches a measure dictionary reference based on parsed annotation values. * * @private * @param {_PdfDictionary} dictionary Destination annotation dictionary. * @param {any} annotation Parsed annotation object. * @param {string[]} annotationKeys Keys present in the parsed annotation object. * @returns {void} */ _addMeasureDictionary(dictionary: _PdfDictionary, annotation: any, annotationKeys: string[]): void; /** * Creates a PDF dictionary from a plain object of measurement elements. * * @private * @param {any} elements Plain object containing measurement properties. * @returns {_PdfDictionary} Constructed PDF dictionary with mapped entries. */ _readDictionaryElements(elements: any): _PdfDictionary; /** * Adds binary stream data such as sound or embedded files to the annotation and updates related dictionaries. * * @private * @param {_PdfDictionary} dictionary Destination annotation dictionary. * @param {Map<string, string>} data Table containing stream metadata. * @param {string} values Hexadecimal string representing stream bytes. * @returns {void} */ _addStreamData(dictionary: _PdfDictionary, data: Map<string, string>, values: string): void; /** * Decodes an encoded appearance string and applies the resulting appearance resources to the annotation. * * @private * @param {_PdfDictionary} dictionary Destination annotation dictionary to update. * @param {string} data Encoded appearance string. * @returns {void} */ _addAppearanceData(dictionary: _PdfDictionary, data: string): void; /** * Parses a typed appearance wrapper into a PDF primitive value including names numbers strings arrays dictionaries streams and unicode strings. * * @private * @param {any} element Typed wrapper to parse. * @returns {any} Parsed primitive or reference. */ _parseAppearance(element: any): any; /** * Converts a plain object with typed wrappers into a PDF dictionary. * * @private * @param {any} element Plain object containing typed wrappers. * @returns {_PdfDictionary} Constructed PDF dictionary. */ _parseDictionary(element: any): _PdfDictionary; /** * Converts a typed stream wrapper into a PDF content stream and defers or applies dictionary resources. * * @private * @param {any} element Typed stream wrapper containing data and dictionary. * @returns {_PdfContentStream} Constructed PDF content stream. */ _parseStream(element: any): _PdfContentStream; /** * Applies dictionary resources and compression flags to a content stream considering import context. * * @private * @param {_PdfContentStream} stream Target content stream to update. * @param {any} [element] Optional typed wrapper used when pending resources are present. * @returns {void} */ _parseStreamElements(stream: _PdfContentStream, element?: any): void; /** * Escapes special characters for safe inclusion in JSON strings. * * @private * @param {string} value Input string to sanitize. * @returns {string} Sanitized string with escapes applied. */ _getValidString(value: string): string; }