From 5ab24b2abde70ef3caf9e8d6ded6be3a63d82cc3 Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Mon, 12 May 2025 16:34:04 +0200 Subject: [PATCH] - Generazione PDF e per Stampa --- src/server/models/catalog.js | 4 ++++ src/server/router/admin_router.js | 40 +++++++++++++++++++------------ src/server/tools/general.js | 25 +++++++++++++++++++ 3 files changed, 54 insertions(+), 15 deletions(-) diff --git a/src/server/models/catalog.js b/src/server/models/catalog.js index 2bf38ce..fd80543 100755 --- a/src/server/models/catalog.js +++ b/src/server/models/catalog.js @@ -69,9 +69,13 @@ const CatalogSchema = new Schema({ }, pdf_generato: String, + pdf_generato_stampa: String, data_generato: { type: Date, }, + data_generato_stampa: { + type: Date, + }, username_lista_generata: { type: String, }, diff --git a/src/server/router/admin_router.js b/src/server/router/admin_router.js index a102b4d..2e36698 100755 --- a/src/server/router/admin_router.js +++ b/src/server/router/admin_router.js @@ -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}`); } diff --git a/src/server/tools/general.js b/src/server/tools/general.js index fb58990..c57a7aa 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -6268,7 +6268,32 @@ module.exports = { return Array.from(mystr).map(char => accentsMap.get(char) || char).join(''); }, + getDateYYYYMMDD_Today() { + // Ottieni la data attuale nel formato YYYY-MM-DD + const today = new Date(); + const formattedDate = today.toISOString().split('T')[0]; // Format YYYY-MM-DD + return formattedDate + }, + convertFullFileNameToURL(idapp, fullfilename) { + const mydir = this.getdirByIdApp(idapp); + const myhost = this.getHostByIdApp(idapp); + + // ++ remove mydir from fullfilename and add myhost to generate a URL + const url = fullfilename.replace(mydir, '').replace(/\\/g, '/'); // Replace backslashes with slashes + const myurl = myhost + '/' + url; + + console.log('myurl', myurl); + return myurl; + }, + + removePathDirByFileName(idapp, fullfilename) { + const mydir = this.getdirByIdApp(idapp); + + // ++ remove mydir from fullfilename and add myhost to generate a URL + const filename = fullfilename.replace(mydir, '').replace(/\\/g, '/'); // Replace backslashes with slashes + return filename; + }, };