import HTMLtoDOCX from '@turbodocx/html-to-docx'; export interface DOCXOptions { title?: string; creator?: string; font?: string; margins?: { top: number; right: number; bottom: number; left: number }; lang?: string; } export class DOCXConverterService { async convert(html: string, options: DOCXOptions = {}): Promise { const opts = { title: options.title || 'Document', creator: options.creator || 'iistwin CRM', font: options.font || 'Noto Sans', margins: options.margins || { top: 1440, right: 1440, bottom: 1440, left: 1440 }, lang: options.lang || 'ru-RU', }; const convertFn = typeof HTMLtoDOCX === 'function' ? HTMLtoDOCX : (HTMLtoDOCX as any).default; if (typeof convertFn !== 'function') { throw new Error('HTMLtoDOCX converter is not available'); } const result = await convertFn(html, null, opts); if (result instanceof ArrayBuffer) { return Buffer.from(result); } if (Buffer.isBuffer(result)) { return result; } // Fallback: некоторые версии возвращают Blob/Buffer return Buffer.from(result as any); } }