Перейти к основному содержимому
claw
am
tools
Инструменты
Документы
Daoark
EN
Главная
Главная
/
Документы
›
20 * 1024 * 1024) { errorMsg.textContent = '文件超过 20MB'; return; } var spec = orderInp.value.trim(); if (!spec) { errorMsg.textContent = '请输入新页序'; return; } errorMsg.textContent = ''; btnMain.disabled = true; btnMain.textContent = '排序中...'; resultArea.classList.add('show'); resultContent.innerHTML = ''; try { var bytes = await file.arrayBuffer(); var src = await PDFLib.PDFDocument.load(bytes, { ignoreEncryption: true }); var total = src.getPageCount(); if (total > 50) { errorMsg.textContent = '页数超过 50 页'; return; } var arr = spec.split(',').map(function(s){ return parseInt(s.trim()); }); if (arr.length !== total) throw new Error('页码数 ' + arr.length + ' ≠ 原页数 ' + total); var set = {}; arr.forEach(function(n){ if (n < 1 || n > total) throw new Error('页码越界: ' + n); set[n] = (set[n]||0)+1; }); for (var k = 1; k <= total; k++) if (set[k] !== 1) throw new Error('页码 ' + k + ' 出现 ' + (set[k]||0) + ' 次'); var doc = await PDFLib.PDFDocument.create(); var pages = await doc.copyPages(src, arr.map(function(n){ return n-1; })); pages.forEach(function(p){ doc.addPage(p); }); var out = await doc.save(); var blob = new Blob([out], { type: 'application/pdf' }); var url = URL.createObjectURL(blob); resultMeta.textContent = '原 ' + total + ' 页已重排为 ' + spec; resultContent.innerHTML = '
下载 sorted.pdf (' + fmtSize(blob.size) + ')
'; } catch (err) { errorMsg.textContent = '排序失败: ' + err.message; } finally { btnMain.disabled = false; btnMain.textContent = '开始排序'; } }); })();