- Generazione PDF e per Stampa
This commit is contained in:
@@ -1747,66 +1747,85 @@ export default defineComponent({
|
||||
const pages = document.querySelectorAll(pagesSelector);
|
||||
const pdfs = [];
|
||||
|
||||
for (let i = 0; i < pages.length; i++) {
|
||||
const page = pages[i];
|
||||
try {
|
||||
for (let i = 0; i < pages.length; i++) {
|
||||
const page = pages[i];
|
||||
|
||||
// Nascondi altre pagine
|
||||
pages.forEach((p) => p.classList.add('hidden'));
|
||||
page.classList.remove('hidden');
|
||||
// Nascondi altre pagine
|
||||
pages.forEach((p) => p.classList.add('hidden'));
|
||||
page.classList.remove('hidden');
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||
|
||||
// Genera singolo PDF
|
||||
const pdfBlob = await new Promise<Blob | null>((resolve) => {
|
||||
html2pdf()
|
||||
.set(opt)
|
||||
.from(page)
|
||||
.toPdf()
|
||||
.output('blob', { compress: true })
|
||||
.then(resolve)
|
||||
.catch(() => resolve(null));
|
||||
});
|
||||
// Genera singolo PDF
|
||||
const pdfBlob = await new Promise<Blob | null>((resolve) => {
|
||||
html2pdf()
|
||||
.set(opt)
|
||||
.from(page)
|
||||
.toPdf()
|
||||
.output('blob', { compress: true })
|
||||
.then(resolve)
|
||||
.catch(() => resolve(null));
|
||||
});
|
||||
|
||||
if (pdfBlob) {
|
||||
pdfs.push(pdfBlob);
|
||||
if (pdfBlob) {
|
||||
pdfs.push(pdfBlob);
|
||||
}
|
||||
}
|
||||
|
||||
// Unisci PDF
|
||||
const finalPdf = await PDFDocument.create();
|
||||
for (const blob of pdfs) {
|
||||
const pdf = await PDFDocument.load(await blob.arrayBuffer());
|
||||
const copiedPages = await finalPdf.copyPages(pdf, pdf.getPageIndices());
|
||||
copiedPages.forEach((p) => finalPdf.addPage(p));
|
||||
}
|
||||
|
||||
const finalPdfBytes = await finalPdf.save(); // Uint8Array
|
||||
|
||||
// ✅ Conversione in Blob
|
||||
const blob = new Blob([finalPdfBytes], { type: 'application/pdf' });
|
||||
|
||||
// ✅ Download
|
||||
if (salvasufiledascaricare) {
|
||||
saveAs(blob, opt.filename);
|
||||
} else {
|
||||
// ✅ Crea un oggetto File da Blob
|
||||
const pdfFile = new File([blob], 'report.pdf', { type: 'application/pdf' });
|
||||
|
||||
// Converti il file appena generato
|
||||
const ris = await globalStore.convertPdf(
|
||||
pdfFile,
|
||||
widthpdf.value,
|
||||
heightpdf.value,
|
||||
compressionepdf.value,
|
||||
dir_out,
|
||||
file_out,
|
||||
true,
|
||||
optcatalogo.value,
|
||||
salvasufiledascaricare
|
||||
);
|
||||
|
||||
if (ris) {
|
||||
const catalog = getCatalogoByMyPage.value;
|
||||
if (ris.pdf_generato) {
|
||||
catalog.pdf_generato = ris.pdf_generato;
|
||||
catalog.data_generato = tools.getDateNow();
|
||||
}
|
||||
if (ris.pdf_generato_stampa) {
|
||||
catalog.pdf_generato_stampa = ris.pdf_generato_stampa;
|
||||
catalog.data_generato_stampa = tools.getDateNow();
|
||||
}
|
||||
|
||||
await saveCatalog();
|
||||
}
|
||||
}
|
||||
|
||||
// Ripristina visibilità
|
||||
pages.forEach((p) => p.classList.remove('hidden'));
|
||||
} catch (e) {
|
||||
console.error('Err', e.message);
|
||||
}
|
||||
|
||||
// Unisci PDF
|
||||
const finalPdf = await PDFDocument.create();
|
||||
for (const blob of pdfs) {
|
||||
const pdf = await PDFDocument.load(await blob.arrayBuffer());
|
||||
const copiedPages = await finalPdf.copyPages(pdf, pdf.getPageIndices());
|
||||
copiedPages.forEach((p) => finalPdf.addPage(p));
|
||||
}
|
||||
|
||||
const finalPdfBytes = await finalPdf.save(); // Uint8Array
|
||||
|
||||
// ✅ Conversione in Blob
|
||||
const blob = new Blob([finalPdfBytes], { type: 'application/pdf' });
|
||||
|
||||
// ✅ Download
|
||||
if (salvasufiledascaricare) {
|
||||
saveAs(blob, opt.filename);
|
||||
} else {
|
||||
// ✅ Crea un oggetto File da Blob
|
||||
const pdfFile = new File([blob], 'report.pdf', { type: 'application/pdf' });
|
||||
|
||||
// Converti il file appena generato
|
||||
await globalStore.convertPdf(
|
||||
pdfFile,
|
||||
widthpdf.value,
|
||||
heightpdf.value,
|
||||
compressionepdf.value,
|
||||
dir_out,
|
||||
file_out,
|
||||
true,
|
||||
optcatalogo.value,
|
||||
);
|
||||
}
|
||||
|
||||
// Ripristina visibilità
|
||||
pages.forEach((p) => p.classList.remove('hidden'));
|
||||
}
|
||||
|
||||
const generatePDF = async () => {
|
||||
@@ -1860,12 +1879,7 @@ export default defineComponent({
|
||||
|
||||
const element = document.getElementById('pdf-content');
|
||||
const opt = {
|
||||
margin: [
|
||||
defaultMargin,
|
||||
defaultMargin,
|
||||
defaultMargin,
|
||||
defaultMargin,
|
||||
],
|
||||
margin: [defaultMargin, defaultMargin, defaultMargin, defaultMargin],
|
||||
filename: myfile,
|
||||
image: {
|
||||
type: 'jpeg',
|
||||
@@ -1890,7 +1904,7 @@ export default defineComponent({
|
||||
// a4: [595.28, 841.89]
|
||||
|
||||
if (true) {
|
||||
await generateLargePDF(opt, '.pdf-section', false, 'upload/', file_out);
|
||||
await generateLargePDF(opt, '.pdf-section', false, 'upload/cataloghi/', file_out);
|
||||
} else {
|
||||
await html2pdf().set(opt).from(element).save();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user