/** * Preview Renderer * * Renders ESC/POS commands to preview images. * Simulates thermal printer output for preview purposes. * * @example * ```typescript * const renderer = new PreviewRenderer(); * const preview = await renderer.render(commands, { paperWidth: 58 }); * console.log(preview.base64); * ``` */ /** * Preview options */ export interface PreviewOptions { /** Paper width in mm (default: 58) */ paperWidth?: number; /** DPI (default: 203) */ dpi?: number; /** Background color (default: '#ffffff') */ backgroundColor?: string; /** Foreground color (default: '#000000') */ foregroundColor?: string; /** Font size in pixels (default: 24) */ fontSize?: number; /** Line height multiplier (default: 1.2) */ lineHeight?: number; } /** * Preview result */ export interface PreviewResult { /** Base64 encoded image */ base64: string; /** Image width in pixels */ width: number; /** Image height in pixels */ height: number; /** MIME type */ mimeType: string; } /** * Preview renderer interface */ export interface IPreviewRenderer { render(commands: Uint8Array, options?: PreviewOptions): PreviewResult; renderToImageData(commands: Uint8Array, options?: PreviewOptions): ImageData; } /** * Preview Renderer class * Renders ESC/POS commands to preview images */ export declare class PreviewRenderer implements IPreviewRenderer { private readonly logger; /** * Render ESC/POS commands to a preview image */ render(commands: Uint8Array, options?: PreviewOptions): PreviewResult; /** * Render to ImageData (for Canvas rendering) */ renderToImageData(commands: Uint8Array, options?: PreviewOptions): ImageData; /** * Parse ESC/POS commands into renderable lines */ private parseCommands; /** * Create text buffer handlers for command parsing */ private createTextBufferHandlers; /** * Create line management handlers */ private createLineHandlers; /** * Parse the command stream byte by byte */ private parseCommandStream; /** * Handle ESC (0x1B) or GS (0x1D) command sequences. * @param prefix - ESC or GS prefix byte * @returns Number of bytes consumed */ private handleControlSequence; /** * Handle multi-byte character decoding (GBK/UTF-8). * @returns Decoded character and number of bytes consumed */ private handleMultiByte; /** * Render to canvas and return base64 */ private renderToCanvas; /** * Draw lines to canvas context */ private drawToContext; /** * Create placeholder result for non-browser environments */ private createPlaceholder; } export declare const previewRenderer: PreviewRenderer;