- Generazione PDF e per Stampa

This commit is contained in:
Surya Paolo
2025-05-12 16:34:04 +02:00
parent 09a05a11d5
commit 5ab24b2abd
3 changed files with 54 additions and 15 deletions

View File

@@ -44,7 +44,7 @@ var { authenticate } = require('../middleware/authenticate');
const multer = require('multer');
const DIR_PDF_IN = __dirname + '/upload/files_input/';
const DIR_PDF_OUT = __dirname + '/upload/files_output/';
// const DIR_PDF_OUT = __dirname + '/upload/files_output/';
const upload = multer({ dest: DIR_PDF_IN });
@@ -301,7 +301,8 @@ async function convertPDF_PdfLib(idapp, inputFile, outputFile, options) {
let fileout = outputFile;
if (options.compressione) {
const compressed = tools.removeFileExtension(outputFile) + '-compressed.pdf';
const todayDate = tools.getDateYYYYMMDD_Today();
const compressed = tools.removeFileExtension(outputFile) + `_${todayDate}.pdf`;
await compressPdf(outputFile, compressed, options.compressione);
@@ -311,15 +312,17 @@ async function convertPDF_PdfLib(idapp, inputFile, outputFile, options) {
}
if (options.dir_out && options.idapp) {
// Crea directory se non esiste !
// Salva il fileout anche su questa directory dir_out
options.dir_out = tools.getdirByIdApp(options.idapp) + '/' + options.dir_out;
const fileoutdir = path.join(options.dir_out, options.file_out);
await fs.promises.copyFile(fileout, fileoutdir);
console.log(`File ${fileout} anche salvato in ${options.dir_out}`);
//const fileoutdir = path.join(options.dir_out, options.file_out);
//await fs.promises.copyFile(fileout, fileoutdir);
//console.log(`File ${fileout} anche salvato in ${options.dir_out}`);
}
let fileout_print = '';
// Crea anche il PDF per la stampa
if (
options.print_left !== 0 ||
@@ -331,7 +334,12 @@ async function convertPDF_PdfLib(idapp, inputFile, outputFile, options) {
ris = await ConvertPDF_WithMargins(options);
}
return { fileout, fileout_print };
const uscita = {
pdf_generato: tools.removePathDirByFileName(options.idapp, fileout),
pdf_generato_stampa: tools.removePathDirByFileName(options.idapp, ris.fileout_print),
}
return uscita;
} catch (e) {
console.error('Errore: ', e.message);
return '';
@@ -438,19 +446,21 @@ router.post('/convert-pdf', upload.single('pdf'), async (req, res) => {
return res.status(400).send('Width parameter is required');
}
let outputFile = path.join(DIR_PDF_OUT, `${tools.removeFileExtension(req.file.originalname)}-converted.pdf`);
options.dir_out = tools.getdirByIdApp(options.idapp) + '/' + options.dir_out;
// let outputFile = path.join(options.dir_out, `${tools.removeFileExtension(req.file.originalname)}-converted.pdf`);
let outputFile = path.join(options.dir_out, `${options.file_out}`);
try {
await fs.promises.mkdir(DIR_PDF_IN, { recursive: true });
await fs.promises.mkdir(DIR_PDF_OUT, { recursive: true });
await fs.promises.mkdir(options.dir_out, { recursive: true });
// Converti il PDF
// await convertPDF_GS(inputFile, outputFile, width, height);
const fileout = await convertPDF_PdfLib(idapp, inputFile, outputFile, options);
const risout = await convertPDF_PdfLib(idapp, inputFile, outputFile, options);
if (!options.dir_out) {
// Invia il file convertito
res.download(fileout, 'output-converted.pdf', (err) => {
res.download(risout.pdf_generato, 'output-converted.pdf', (err) => {
if (err) {
if (err.code === 'ECONNABORTED' || err.code === 'ECONNRESET') {
console.warn('Richiesta annullata dal client:', err.message);
@@ -462,17 +472,17 @@ router.post('/convert-pdf', upload.single('pdf'), async (req, res) => {
}
} else {
// Rimuovi i file temporanei
cleanupFiles(inputFile, outputFile);
cleanupFiles(inputFile, '');
}
});
} else {
cleanupFiles(inputFile, outputFile);
cleanupFiles(inputFile, '');
}
return res.status(200).send({ fileout });
return res.status(200).send(risout);
} catch (error) {
console.error('Errore durante la conversione:', error);
cleanupFiles(inputFile, outputFile);
cleanupFiles(inputFile, '');
if (!res.headersSent) {
res.status(500).send(`Errore durante la conversione del PDF: ${error.message}`);
}