- generazione del PDF riscritto totalmente

- ora è possibile generarlo anche da backend
- FIX: corretto la qualità del PDF e la dimensione non esatta in pixel...
This commit is contained in:
Surya Paolo
2025-05-29 18:23:20 +02:00
parent 9efd193124
commit 40214abe64
12 changed files with 1413 additions and 428 deletions

View File

@@ -3948,45 +3948,58 @@ module.exports = {
this.writelogfile(mystr, FILENAVE);
},
async move(oldPath, newPath, callback) {
try {
const ris = await fs.promises.rename(oldPath, newPath);
console.log('... File Rinominato:', oldPath, 'in:', newPath, 'ris', ris);
callback(); // Chiamare il callback senza errori
} catch (err) {
if (err.code === 'EXDEV') {
await copy(); // Se EXDEV, utilizza la funzione copy
} else {
console.error('Errore durante lo spostamento:', err);
callback(err); // Passa l'errore al callback
}
}
async copyFile(src, dest) {
return new Promise((resolve, reject) => {
const readStream = fs.createReadStream(src);
const writeStream = fs.createWriteStream(dest);
async function copy() {
const readStream = fs.createReadStream(oldPath);
const writeStream = fs.createWriteStream(newPath);
readStream.on('error', (err) => {
console.error('Errore nella lettura del file:', err);
callback(err); // Passa l'errore al callback
});
writeStream.on('error', (err) => {
console.error('Errore nella scrittura del file:', err);
callback(err); // Passa l'errore al callback
});
readStream.on('error', reject);
writeStream.on('error', reject);
writeStream.on('finish', resolve);
readStream.pipe(writeStream);
});
},
writeStream.on('finish', async () => {
console.log('File copiato, ora rimuovo il file di origine:', oldPath);
try {
await fs.promises.unlink(oldPath); // Rimuovi il file originale
callback(); // Chiama il callback al termine
} catch (err) {
console.error('Errore nella rimozione del file originale:', err);
callback(err); // Passa l'errore al callback
/**
* Sposta un file da oldPath a newPath.
* Se rename fallisce con EXDEV (diverso device), fa copia + delete.
* Se la cartella di destinazione non esiste, la crea.
* @param {string} oldPath
* @param {string} newPath
* @param {(err?: Error) => void} [callback] - opzionale, se non passato ritorna Promise
*/
async move(oldPath, newPath, callback) {
const moveOp = async () => {
// Assicurati che la cartella di destinazione esista
const dir = path.dirname(newPath);
await fs.promises.mkdir(dir, { recursive: true });
try {
const newOldPath = oldPath.replace(/\/$/, '');
const newNewPath = newPath.replace(/\/$/, '');
await fs.promises.rename(newOldPath, newNewPath);
console.log(`File spostato: ${oldPath} -> ${newPath}`);
} catch (err) {
if (err.code === 'EXDEV') {
// Spostamento tra device diversi: copia + elimina
await copyFile(oldPath, newPath);
await fs.promises.unlink(oldPath);
console.log(`File copiato e cancellato: ${oldPath} -> ${newPath}`);
} else if (err.code === 'ENOENT') {
throw new Error(`File non trovato: ${oldPath}`);
} else {
throw err;
}
});
}
};
if (callback && typeof callback === 'function') {
moveOp()
.then(() => callback())
.catch(callback);
} else {
return moveOp();
}
},
@@ -5744,13 +5757,24 @@ module.exports = {
return 'upload/';
},
getDirByTable(idapp, table) {
let mydir = this.getdirByIdApp(idapp) + '/';
if (table === 'catalog') {
mydir = 'upload/cataloghi/';
}
return mydir;
},
getURLImg(idapp, table, username, img, checkifExist) {
let dirmain = '';
try {
// let dir = this.getdirByIdApp(idapp) + dirmain + '/' + this.getDirUpload();
let dir =
this.getHostByIdApp(idapp) +
this.getdirByIdApp(idapp)
'/' +
this.getDirUpload() +
shared_consts.getDirectoryImgByTable(table, username) +
@@ -6159,4 +6183,8 @@ module.exports = {
const nuovoNomeFile = nomeFile + suffisso + estensione;
return path.join(dir, nuovoNomeFile);
},
async attendiNSecondi(numsec) {
await new Promise(resolve => setTimeout(resolve, numsec * 1000));
}
};