UNPKG

@jrmc/adonis-attachment

Version:

Turn any field on your Lucid model to an attachment data type

55 lines (54 loc) 1.82 kB
/** * @jrmc/adonis-attachment * * @license MIT * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr> */ import Converter from './converter.js'; import ImageConverter from './image_converter.js'; import { use } from '../utils/helpers.js'; export default class DocumentThumbnailConverter extends Converter { async handle({ input, options }) { const lib = await use('libreoffice-file-converter'); const LibreOfficeFileConverter = lib.LibreOfficeFileConverter; const outputBuffer = await this.documentToImage(LibreOfficeFileConverter, input); if (options && outputBuffer) { const converter = new ImageConverter(); return await converter.handle({ input: outputBuffer, options, }); } return outputBuffer; } async documentToImage(LibreOfficeFileConverter, input) { let binaryPaths = undefined; if (this.binPaths && this.binPaths.libreofficePaths) { binaryPaths = this.binPaths.libreofficePaths; } const libreOfficeFileConverter = new LibreOfficeFileConverter({ childProcessOptions: { timeout: 60 * 1000, }, binaryPaths, }); if (Buffer.isBuffer(input)) { const output = await libreOfficeFileConverter.convert({ buffer: input, input: 'buffer', output: 'buffer', format: 'jpeg', }); return output; } else { const output = await libreOfficeFileConverter.convert({ inputPath: input, input: 'file', output: 'buffer', format: 'jpeg', }); return output; } } }