// ==UserScript== // @name 高教社文档阅读器 PDF下载 // @version 1.0.1 // @description 为高教社文档阅读器添加PDF下载功能。该脚本在高教社文档阅读器页面上添加一个下载按钮,允许用户将文档以PDF格式下载到本地。 // @namespace https://github.com/lcandy2 // @match *://hep-urc-file.hep.com.cn/* // @author Lcandy // @grant none // @license MPL-2.0 // @require https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js // @run-at document-end // ==/UserScript== (function() { 'use strict'; function generateDownloadButton() { // 添加下载按钮 let downloadBtn = document.createElement('a'); downloadBtn.className = 'activePage'; downloadBtn.textContent = '下载'; // 将按钮添加到页面 let changePageDiv = document.querySelector('.changePage'); if (changePageDiv) { changePageDiv.appendChild(downloadBtn); } // 绑定点击事件处理程序 downloadBtn.addEventListener('click', function() { // 调用生成 PDF 的函数 if(a.fileType == "pdf"){ generatePDFFromImages(basePath, widthlist); } else {alert('暂不支持本文档下载'+a.fileType)} }); } generateDownloadButton(); // 生成 PDF 的函数 function generatePDFFromImages(basePath, widthlist) { // 创建一个 jsPDF 实例 const pdf = new jspdf.jsPDF(); let loadPageNum = datas.length <= initialPage ? datas.length : initialPage; // 循环获取所有图片并添加到 PDF 中 for (let i = 0; i < loadPageNum; i++) { let imageUrl = basePath+'/'+(i+1)+'.png' console.log('正在下载:',imageUrl) // 将图片添加到 PDF pdf.addImage(imageUrl, 'PNG', 0, 0); // 添加新的页面,用于容纳下一张图片 if (i + 1 < loadPageNum) { pdf.addPage(); } } console.log('合成保存至文件',basePath.substring(basePath.indexOf("/") + 1, basePath.indexOf(".files"))+'.pdf') // 保存 PDF 文件 pdf.save(basePath.substring(basePath.indexOf("/") + 1, basePath.indexOf(".files"))+'.pdf'); } })();