UNPKG

tipazo

Version:

libreria-multiform

29 lines (27 loc) 1.19 kB
import fs from 'fs'; import path from 'path'; import { PDFDocument } from 'pdf-lib'; import sharp from 'sharp'; import puppeteer from 'puppeteer'; export async function convertirArchivoAPDF(rutaArchivo: string, salidaPDF: string): Promise<void> { const extension = path.extname(rutaArchivo).toLowerCase(); if (extension === '.jpg' || extension === '.png') { const buffer = await sharp(rutaArchivo).toFormat('pdf').toBuffer(); fs.writeFileSync(salidaPDF, buffer); } else if (extension === '.html') { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(`file://${path.resolve(rutaArchivo)}`, { waitUntil: 'networkidle0' }); await page.pdf({ path: salidaPDF, format: 'A4' }); await browser.close(); } else if (extension === '.txt') { const contenido = fs.readFileSync(rutaArchivo, 'utf-8'); const pdfDoc = await PDFDocument.create(); const page = pdfDoc.addPage(); page.drawText(contenido, { x: 50, y: 700 }); const pdfBytes = await pdfDoc.save(); fs.writeFileSync(salidaPDF, pdfBytes); } else { throw new Error(`Formato no soportado: ${extension}`); } }