当前位置: 首页 > news >正文

拆分PDF.html 办公小工具

将下面的脚本拷贝放到一个空白的html文件中,然后保存,通过浏览器打开后就可以拆分pdf文件了。

拆分PDF.html

<!DOCTYPE html>
<html>
<head><title>PDF拆分工具</title><script src="https://cdnjs.cloudflare.com/ajax/libs/pdf-lib/1.17.1/pdf-lib.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js"></script> <style>.container { max-width: 800px; margin: 20px auto; padding: 20px; }.drop-zone { border: 2px dashed #ccc; padding: 20px; text-align: center; }#pageInput { width: 300px; padding: 5px; margin: 10px 0; }#status { color: #666; margin: 10px 0; }#splitBtn { background: #2196F3; color: white; padding: 10px 20px; border: none; cursor: pointer; }</style>
</head>
<body><div class="container"><div class="drop-zone" id="dropZone">拖拽PDF文件至此 或 <input type="file" id="fileInput" accept=".pdf"></div><input type="text" id="pageInput" placeholder="输入页码范围 (如: 1-5,7,9-12)"><div id="status">等待文件上传...</div><button id="splitBtn" onclick="splitPDF()">开始拆分</button></div><script>
let selectedFile = null;// 文件处理 
document.getElementById('dropZone').ondragover  = (e) => {e.preventDefault(); e.target.style.borderColor  = '#2196F3';
};document.getElementById('dropZone').ondrop  = (e) => {e.preventDefault(); const file = e.dataTransfer.files[0]; if(file.type  === 'application/pdf') {selectedFile = file;updateStatus(`已选择文件: ${file.name}`); }
};document.getElementById('fileInput').onchange  = (e) => {const file = e.target.files[0]; if(file.type  === 'application/pdf') {selectedFile = file;updateStatus(`已选择文件: ${file.name}`); }
};// 核心拆分逻辑 
async function splitPDF() {if(!selectedFile) return alert('请先选择PDF文件');const pages = parsePageRange(document.getElementById('pageInput').value); if(pages.length  === 0) return alert('请输入有效页码范围');try {const pdfBytes = await selectedFile.arrayBuffer(); const pdfDoc = await PDFLib.PDFDocument.load(pdfBytes); const newPdf = await PDFLib.PDFDocument.create(); // 复制指定页面 const copiedPages = await newPdf.copyPages(pdfDoc,  pages.map(p  => p-1));copiedPages.forEach(page  => newPdf.addPage(page)); // 生成新文件 const newPdfBytes = await newPdf.save(); saveAs(new Blob([newPdfBytes], {type: 'application/pdf'}), `拆分结果_${selectedFile.name}`); updateStatus("拆分完成,开始下载...");} catch (error) {console.error(' 拆分失败:', error);alert('文件处理失败,请检查PDF格式');}
}// 页码解析器 (支持格式: 1-5,7,9-12)
function parsePageRange(input) {const pages = new Set();const ranges = input.split(','); ranges.forEach(range  => {const match = range.match(/^(\d+)(?:-(\d+))?$/); if(match) {const start = parseInt(match[1]);const end = match[2] ? parseInt(match[2]) : start;for(let i = start; i <= end; i++) {pages.add(i); }}});return Array.from(pages).sort((a,b)  => a - b);
}function updateStatus(text) {document.getElementById('status').innerHTML  = text;
}
</script>
</body>
</html>

http://www.dtcms.com/a/478301.html

相关文章:

  • 网站编辑用什么软件有关于网站建设类似的文章
  • 陶瓷网站制作wordpress导购主题
  • 分割——双线性插值
  • 北京天仪建设工程质量检测所网站上海做网站的公司电话
  • 建站优化一条龙新闻型网站建设
  • Petslist – Pet listing WordPress Theme Free Download
  • STM32 GPIO-------设置成51单片机模式输出
  • C++之多层继承、多源继承、菱形继承
  • 双目三维重建-1相机标定
  • GIT 提示 remote: HTTP Basic: Access denied
  • 建设门户网站都需要什么成都网站设计新闻
  • 徐州贾汪区建设局网站资兴市住房和城乡建设局网站
  • 黄江仿做网站企业管理系统多少钱
  • 机器学习-推荐系统(下)
  • 「机器学习笔记13」无监督学习全面解析:从聚类算法到Python实战
  • 计算机视觉(opencv)——基于MediaPipe与机器学习的手势识别系统
  • 建设网站的请示如何做漂亮的网站
  • 【C++ 学习】单词统计器:从 “代码乱炖” 到 “清晰可品” 的复习笔记
  • STL分解:从定义到实战
  • 自己写算法(九)网页数字动画函数——东方仙盟化神期
  • 郑州市科协网站小程序可以用手机网站吗
  • 创建一个 Vue3项目
  • 使用远程模拟器开发调试安卓APP
  • Java外功精要(3)——Spring配置文件和mybatis
  • 深圳网站建设服务商万创网为女足世界杯创建一个网站
  • Vmware Workstation虚拟机不能拖动复制文件到宿主机的Bug原因探究过程
  • 嵌入式Linux开发环境学习(一)
  • 三种解法(数组、栈、快慢指针)全面解析——力扣234.回文链表全解析
  • linux 系统压力测试工具stress使用
  • 铜川做网站电话西安模板网站建设