diff --git a/src/services/pdfService.js b/src/services/pdfService.js index c9a2d30..37fe5c3 100644 --- a/src/services/pdfService.js +++ b/src/services/pdfService.js @@ -97,10 +97,9 @@ function formatMicrLine(routingNo, accountNo, checkNo) { */ function generateCheckPdf(account, checks, fields) { return new Promise((resolve, reject) => { + console.log(`[pdf] MICR font path: ${MICR_FONT_PATH}`); const hasMicrFont = fs.existsSync(MICR_FONT_PATH); - if (!hasMicrFont) { - console.warn(`MICR font not found at ${MICR_FONT_PATH}. MICR line will use fallback font.`); - } + console.log(`[pdf] MICR font exists: ${hasMicrFont}`); const doc = new PDFDocument({ size: [ @@ -112,7 +111,14 @@ function generateCheckPdf(account, checks, fields) { }); if (hasMicrFont) { - doc.registerFont('MICR', MICR_FONT_PATH); + try { + doc.registerFont('MICR', MICR_FONT_PATH); + console.log('[pdf] MICR font registered successfully'); + } catch (err) { + console.error(`[pdf] MICR font registration failed: ${err.message}`); + } + } else { + console.warn(`[pdf] MICR font not found — falling back to Courier`); } const buffers = []; @@ -206,10 +212,15 @@ function generateCheckPdf(account, checks, fields) { const micrPos = pt(0.3, MICR_Y_IN); if (hasMicrFont) { - doc.font('MICR').fontSize(12).fillColor('#000000') - .text(micrLine, micrPos.x, micrPos.y, { lineBreak: false }); + try { + doc.font('MICR').fontSize(12).fillColor('#000000') + .text(micrLine, micrPos.x, micrPos.y, { lineBreak: false }); + } catch (err) { + console.error(`[pdf] Failed to render MICR font on slot ${slot}: ${err.message}`); + doc.font('Courier').fontSize(10).fillColor('#000000') + .text(micrLine, micrPos.x, micrPos.y, { lineBreak: false }); + } } else { - // Fallback: Courier approximation (will not scan, but useful for dev) doc.font('Courier').fontSize(10).fillColor('#000000') .text(micrLine, micrPos.x, micrPos.y, { lineBreak: false }); }