MakerBook/api/utils/fileUtils.js

135 lines
4.7 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const pdf2html = require('pdf2html');
const { exec } = require('child_process');
const diretorioArquivos = '/var/www/html/maker_book';
//const pathToJar = '/var/www/logicworld_api/node_modules/pdf2html/vendor/tika-app-2.6.0.jar';
const salvarPDF = (arquivo, nome) => {
console.log("Salvando arquivo...");
const novoNome = `${nome}.pdf`;
const diretorioDestino = path.join(diretorioArquivos, `/materials`);
const novoCaminho = path.join(diretorioDestino, novoNome);
if (!fs.existsSync(diretorioDestino)){
fs.mkdirSync(diretorioDestino, { recursive: true });
}
if (arquivo.filepath) {
try {
fs.renameSync(arquivo.filepath, novoCaminho);
console.log(`PDF salvo em ${novoCaminho}`);
} catch (error) {
console.error(`Erro ao salvar o PDF em ${novoCaminho}:`, error);
}
} else {
console.error(`Tipo de arquivo não suportado ou caminho temporário ausente para ${novoCaminho}`);
}
console.log("PDF salvo com sucesso!");
};
const exibirPDF = (arquivo, res, callback) => {
const caminho = path.join(diretorioArquivos, 'materials', `${arquivo}.pdf`);
console.log(`Carregando PDF de ${caminho}`);
fs.access(caminho, fs.constants.F_OK, (err) => {
if (err) {
console.error(`Erro ao acessar o arquivo: ${err}`);
return callback(err);
}
res.setHeader('Content-Type', 'application/pdf');
res.setHeader('Content-Disposition', 'inline; filename=' + arquivo + '.pdf');
fs.createReadStream(caminho).pipe(res).on('error', (streamErr) => {
console.error(`Erro ao ler o arquivo: ${streamErr}`);
callback(streamErr);
});
});
};
async function processarPDF(arquivo) {
try {
const html = await exibirPDF(arquivo);
console.log('HTML:', html);
// Faça algo com o HTML aqui
} catch (err) {
console.error('Falha ao processar PDF:', err);
// Trate o erro aqui
}
}
const salvarImagem = (imagem, nome, destino) => {
console.log("Salvando imagem...");
const novoNome = `${nome}.jpg`;
const diretorioDestino = path.join(diretorioArquivos, destino);
const novoCaminho = path.join(diretorioDestino, novoNome);
if (!fs.existsSync(diretorioDestino)){
fs.mkdirSync(diretorioDestino, { recursive: true });
}
if (imagem.filepath) {
try {
fs.renameSync(imagem.filepath, novoCaminho);
console.log(`Imagem salva em ${novoCaminho}`);
} catch (error) {
console.error(`Erro ao salvar a imagem em ${novoCaminho}:`, error);
}
} else {
console.error(`Tipo de arquivo não suportado ou caminho temporário ausente para ${novoCaminho}`);
}
console.log("Imagens salvas com sucesso!");
};
const salvarImagens = (imagens, destino) => {
console.log("Salvando imagens...");
imagens.forEach((imagem, index) => {
const novoNome = `${index}.jpg`;
const diretorioDestino = path.join(diretorioArquivos, destino);
const novoCaminho = path.join(diretorioDestino, novoNome);
if (!fs.existsSync(diretorioDestino)){
fs.mkdirSync(diretorioDestino, { recursive: true });
}
if (imagem.filepath) {
try {
fs.renameSync(imagem.filepath, novoCaminho);
console.log(`Imagem salva em ${novoCaminho}`);
} catch (error) {
console.error(`Erro ao salvar a imagem em ${novoCaminho}:`, error);
}
} else {
console.error(`Tipo de arquivo não suportado ou caminho temporário ausente para ${novoCaminho}`);
}
});
console.log("Imagens salvas com sucesso!");
};
const excluirArquivo = (caminho) => {
console.log("Excluindo arquivo...");
const caminhoCompleto = path.join(diretorioArquivos, caminho);
if (fs.existsSync(caminhoCompleto)) {
fs.unlinkSync(caminhoCompleto);
} else {
console.log("Arquivo não encontrado. " + caminhoCompleto);
}
}
const excluirDiretorioEArquivos = (caminho) => {
const diretorio = path.join(diretorioArquivos, caminho);
if (fs.existsSync(diretorio)) {
fs.readdirSync(diretorio).forEach((arquivo) => {
const caminhoCompleto = path.join(diretorio, arquivo);
excluirArquivo(caminhoCompleto);
});
fs.rmdirSync(diretorio);
console.log(`Diretório ${diretorio} e seus arquivos foram excluídos.`);
} else {
console.log("Diretório não encontrado.");
}
};
module.exports = { salvarPDF, processarPDF, exibirPDF, salvarImagem, salvarImagens, excluirArquivo, excluirDiretorioEArquivos };