@fin.cx/einvoice
Version:
A TypeScript module for creating, manipulating, and embedding XML data within PDF files specifically tailored for electronic invoice (einvoice) packages.
93 lines (92 loc) • 3.42 kB
TypeScript
import { PDFRawStream } from '../../../plugins.js';
/**
* Base class for PDF XML extractors with common functionality
*/
export declare abstract class BaseXMLExtractor {
/**
* Known XML file names for different invoice formats
*/
protected readonly knownFileNames: string[];
/**
* Known XML formats to validate extracted content
*/
protected readonly knownFormats: string[];
/**
* Known XML end tags for extracting content from strings
*/
protected readonly knownEndTags: string[];
/**
* Extract XML from a PDF buffer
* @param pdfBuffer PDF buffer
* @returns XML content or null if not found
*/
abstract extractXml(pdfBuffer: Uint8Array | Buffer): Promise<string | null>;
/**
* Check if an XML string is valid
* @param xmlString XML string to check
* @returns True if the XML is valid
*/
protected isValidXml(xmlString: string): boolean;
/**
* Check if the XML string contains a known element
* @param xmlString XML string to check
* @returns True if the XML contains a known element
*/
protected hasKnownXmlElement(xmlString: string): boolean;
/**
* Check if the XML string contains a known format
* @param xmlString XML string to check
* @returns True if the XML contains a known format
*/
protected hasKnownFormat(xmlString: string): boolean;
/**
* Check if the XML string has a proper structure
* @param xmlString XML string to check
* @returns True if the XML has a proper structure
*/
protected hasProperXmlStructure(xmlString: string): boolean;
/**
* Check if the XML string contains binary data
* @param xmlString XML string to check
* @returns True if the XML contains binary data
*/
protected hasBinaryData(xmlString: string): boolean;
/**
* Extract XML from a string
* @param text Text to extract XML from
* @param startIndex Index to start extraction from
* @returns XML content or null if not found
*/
protected extractXmlFromString(text: string, startIndex?: number): string | null;
/**
* Decompress and decode XML content from a PDF stream
* @param stream PDF stream containing XML data
* @param fileName Name of the file (for logging)
* @returns XML content or null if not valid
*/
protected extractXmlFromStream(stream: PDFRawStream, fileName: string): Promise<string | null>;
/**
* Try to decompress a buffer using different methods
* @param buffer Buffer to decompress
* @returns Decompressed buffer or null if decompression failed
*/
protected tryDecompress(buffer: Uint8Array): Uint8Array | null;
/**
* Try to decode a buffer to a string using different encodings
* @param buffer Buffer to decode
* @returns Decoded string or null if decoding failed
*/
protected tryDecodeBuffer(buffer: Uint8Array): string | null;
/**
* Decode a buffer using ISO-8859-1 (Latin1) encoding
* @param buffer Buffer to decode
* @returns Decoded string
*/
protected decodeLatin1(buffer: Uint8Array): string;
/**
* Check if a string is plausibly XML (quick check before validation)
* @param content String to check
* @returns True if the string is plausibly XML
*/
protected isPlausibleXml(content: string): boolean;
}