|
- import fs from 'fs';
- import { v4 } from 'uuid';
- import os from 'os';
- import { exec } from 'child_process';
- import path from 'path';
-
- import IPdfToTextProvider from '../IPdfToTextProvider';
- import IOptionsPdfParseDTO from '../dto/IOptionsPdfParseDTO';
-
- export default class LinuxPdfToText implements IPdfToTextProvider {
- public async extract(filePath: string, options: IOptionsPdfParseDTO = {}): Promise<string> {
- const tempTextFile = path.resolve(os.tmpdir(), v4());
- const { pageNumber } = options;
-
- const pageNumberOption = pageNumber !== undefined ? `-f ${pageNumber} -l ${pageNumber}` : '';
-
- const command = `pdftotext -layout ${pageNumberOption} ${filePath} ${tempTextFile}`;
-
- return new Promise((resolve, reject) => {
- exec(command, async err => {
- if (err) {
- return reject(err);
- }
-
- const contentFile = await fs.promises.readFile(tempTextFile);
-
- await fs.promises.unlink(tempTextFile);
- return resolve(contentFile.toString());
- });
- });
- }
- }
|