- 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

@@ -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,
},

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}`);
}

View File

@@ -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;
},
};