![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/libs/absol-full/dist/js/ |
Upload File : |
/*** module: node_modules/absol-acomp/js/printer.js ***/ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.silentDownloadAsPdf = silentDownloadAsPdf; var _printer = require("absol/src/Print/printer"); var _FileSaver = require("absol/src/Network/FileSaver"); var _ACore = _interopRequireWildcard(require("../ACore")); var _Toast = _interopRequireDefault(require("./Toast")); var _pdf = require("absol/src/Print/pdf"); var _ProgressBar = _interopRequireDefault(require("./ProgressBar")); function silentDownloadAsPdf(adapter) { if (!adapter) throw new Error("Invalid print data"); adapter.parallel = adapter.parallel || 8; adapter.delay = adapter.delay || 0; adapter.chuckLength = 100; adapter.fileName = adapter.fileName || 'exports.pdf'; if (adapter.paddingEven !== false) { adapter.paddingEven = true; } if (!adapter.fileName.toLowerCase().endsWith('.pdf')) adapter.fileName += '.pdf'; var hiddenDiv = (0, _ACore._)({ style: { overflow: 'scroll', visibility: 'hidden', opacity: 0, pointerEvents: 'none', position: 'fixed', zIndex: -1000 } }).addTo(document.body); var progressBar = (0, _ACore._)({ tag: _ProgressBar.default, style: { margin: '5px' } }); var message = (0, _ACore._)({ tag: 'span', style: { margin: '5px' }, child: { text: 'Render' } }); /*** * * @type {Toast} */ var toast = _Toast.default.make({ props: { htitle: "Export DPF" }, child: [{ tag: 'div', style: { margin: '5px' }, child: { tag: 'strong', child: { text: adapter.fileName } } }, message, progressBar] }); return new Promise(resolve => { var docs = adapter.docs.slice(); var docsN = docs.length; var serializer = _printer.ShareSerializer; var chucks = []; var chuckRemain; var printer; var finish = () => { message.firstChild.data = "Create PDF"; (0, _pdf.mergePdfs)(chucks, pData => { progressBar.value = 0.9 + (pData.loaded + pData.merged) / (pData.all || 1) / 10; }).then(mergedPdf => { mergedPdf.save().then(file => { (0, _FileSaver.saveAs)(new Blob([file]), adapter.fileName); progressBar.value = 1; message.firstChild.data = "Complete"; setTimeout(() => { toast.disappear(); }, 5000); }); }); }; var nextChuck = () => { chuckRemain = Math.min(adapter.chuckLength, docs.length); printer = new _printer.PaperPrinter(Object.assign({ lastPagePaddingEven: docs.length <= chuckRemain }, adapter)); process(); }; var finishChuck = () => { chucks.push(printer.pdfDoc.output('arraybuffer')); if (docs.length > 0) { nextChuck(); } else { finish(); } }; var process = () => { message.firstChild.data = 'Render (' + (docsN - docs.length) + '/' + docsN + ')'; var pg0 = 0.9 * (1 - docs.length / (docsN || 1)); progressBar.value = pg0; if (chuckRemain === 0) { finishChuck(); return; } var cDocs = docs.splice(0, Math.min(adapter.parallel, chuckRemain)); chuckRemain -= cDocs.length; var localSync = cDocs.map(doc => { var ctn = (0, _ACore._)({ style: { width: '2048px' } }).addTo(hiddenDiv); var renderSync = doc.render(ctn, doc); if (renderSync && renderSync.then) { renderSync = renderSync.then(() => Object.assign({}, doc, { elt: ctn.firstChild })); } else { renderSync = Promise.resolve(Object.assign({}, doc, { elt: ctn.firstChild })); } return renderSync.then(doc => { var delaySync = []; delaySync.push(new Promise(resolve => { setTimeout(resolve, adapter.delay); })); var elt = doc.elt; if (elt.fmComponent) { if (!doc.opt) doc.opt = {}; if (!doc.opt.margin) { doc.opt.margin = { top: elt.fmComponent.style.paddingTop || 57, left: elt.fmComponent.style.paddingLeft || 57, bottom: elt.fmComponent.style.paddingBottom || 57, right: elt.fmComponent.style.paddingRight || 57 }; } delaySync.push(elt.fmComponent.fragment.afterEntryCompleted()); } return Promise.all(delaySync).then(() => doc); }); }); Promise.all(localSync).then(docList => { return serializer.serialize(docList, printer, pData => { if (!pData.pdf) return; var ng1 = pg0 + pData.pdf.done / (pData.pdf.all || 1) * cDocs.length / (docsN || 1) * 0.9; if (ng1 - progressBar.value > 0.05) { progressBar.value = ng1; } }); }).then(() => printer.flush()).then(() => process()); }; nextChuck(); }); }