Greasy Fork is available in English.

道客88

以pdf形式下载道客88文件

// ==UserScript==
// @name         道客88
// @namespace    Tampermonkey
// @version      1.1
// @description  以pdf形式下载道客88文件
// @author       12321
// @match        https://www.doc88.com/*
// @icon         none
// @grant        none
// @require https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js
// @license MIT
// ==/UserScript==

(function () {
    'use strict';

    // Your code here...


    function canvases2pdf(canvases) {
        var name = document.getElementsByClassName("doctopic")[0].getElementsByTagName("h1")[0].getAttribute("title");
        var pdf = new jspdf.jsPDF({
            format: [595.28, 841.89]
        });
        for (var i = 0; i < canvases.length; i++) {
            var pageData = canvases[i].toDataURL('image/png', 1.0);
            if (i > 0) {
                pdf.addPage();
            }
            pdf.addImage(pageData, 'PNG', 0, 0, 595.28, 841.89, null, 'NONE');
        }
        pdf.save(name + ".pdf");
    }


    //下载图片转canvas(递归函数) 并保存为pdf
    function h2c_2pdf(id, i) {
        try {
            //跳转界面
            window.location.hash = id + i;
            //等待加载
            window.setTimeout(function () {
                //转换并下载
                var page = $(id + i)[0];
                if (page == null) {
                    canvases2pdf(canvases);
                } else {
                    html2canvas(page, {
                        useCORS: true,
                        allowTaint: false,
                    }).then(function (canvas) {
                        canvases.push(canvas);
                        h2c_2pdf(id, i + 1);
                    })
                }
            }, 1000)//等待时间1s
        } catch (err) {
            console.log(err);
        }
    }

    var canvases = [];
    //创建按钮
    var button = document.createElement("button");
    button.innerHTML = "下载-pdf";
    button.onclick = function () {
        //点击继续按钮
        try {
            var con_button = document.getElementById("continueButton");
            con_button.click();
        } catch (err) {
            console.log("没有找到继续按钮");
        }
        var id = '#outer_page_';
        h2c_2pdf(id, 1);
    }

    //网页加载1s后生成按钮
    window.setTimeout(function () {
        var x = document.getElementById("item-page-panel");
        var y = document.createElement("li");
        y.appendChild(button);
        x.appendChild(y);
    }, 1000);

})();