Zum Hauptinhalt springen
claw
am
tools
Werkzeuge
Dokumente
Daoark
EN
Startseite
Startseite
/
Dokumente
›
20 * 1024 * 1024) { errorMsg.textContent = '文件超过 20MB'; return; } var spec = pagesInp.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 delSet = {}; spec.split(',').forEach(function(part) { part = part.trim(); var m = part.match(/^(\d+)(?:-(\d+))?$/); if (!m) throw new Error('格式错误: ' + part); var s = parseInt(m[1]), en = m[2] ? parseInt(m[2]) : s; if (s < 1 || en > total || s > en) throw new Error('越界: ' + part); for (var k = s; k <= en; k++) delSet[k] = true; }); var keep = []; for (var i = 1; i <= total; i++) if (!delSet[i]) keep.push(i - 1); if (keep.length === 0) throw new Error('至少保留 1 页'); var doc = await PDFLib.PDFDocument.create(); var pages = await doc.copyPages(src, keep); 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 + ' 页 → 删除 ' + Object.keys(delSet).length + ' 页 → 保留 ' + keep.length + ' 页'; resultContent.innerHTML = '
下载 removed.pdf (' + fmtSize(blob.size) + ')
'; } catch (err) { errorMsg.textContent = '删除失败: ' + err.message; } finally { btnMain.disabled = false; btnMain.textContent = '删除页面'; } }); })();