Greasy Fork

来自缓存

Greasy Fork is available in English.

TaoDouPDF

pdf download

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         TaoDouPDF
// @namespace    http://tampermonkey.net/
// @version      0.1.4
// @description  pdf download
// @author       MiaoMint
// @include      https://www.taodocs.com/*
// @require      https://cdnjs.cloudflare.com/ajax/libs/pdf-lib/1.17.1/pdf-lib.min.js
// @license MIT
// ==/UserScript==
var taoPageCount = 0;
var taoLoadedPage = 3;
var taoPdfs;
var taoNextPageStr;
var nextButton = document.querySelector('#b_doc_zip');
var downloadBUtton = document.querySelector('#b_doc_zip3');
var downloadBUtton1 = document.querySelector('#top_doc_zip');
var title = document.querySelector("title");
(function () {
    'use strict';
    nextButton.innerHTML = "下一页"
    nextButton.setAttribute("href", "javascript:void(0)")
    nextButton.onclick = () => {
        getNextPaget()
    }

    downloadBUtton.innerHTML = "TaoDou下载"
    downloadBUtton.setAttribute("href", "javascript:void(0)")
    downloadBUtton.onclick = () => {
        download()
    }

    downloadBUtton1.innerHTML = "TaoDou下载"
    downloadBUtton1.setAttribute("href", "javascript:void(0)")
    downloadBUtton1.onclick = () => {
        download()
    }

})();


function getPdfFile() {
    let pdfs = []
    taoPdfs.forEach((e) => {
        pdfs.push(`data:application/pdf;base64,${btoa(e)}`)
    })
    mergeAllPDFs(pdfs)
}


async function mergeAllPDFs(urls) {

    const pdfDoc = await PDFLib.PDFDocument.create();
    const numDocs = urls.length;
    downloadBUtton.innerHTML = "合并文件中..."
    downloadBUtton1.innerHTML = "合并文件中..."
    for (var i = 0; i < numDocs; i++) {
        const donorPdfBytes = await fetch(urls[i]).then(res => res.arrayBuffer());
        const donorPdfDoc = await PDFLib.PDFDocument.load(donorPdfBytes);
        const docLength = donorPdfDoc.getPageCount();
        for (var k = 0; k < docLength; k++) {
            const [donorPage] = await pdfDoc.copyPages(donorPdfDoc, [k]);
            //console.log("Doc " + i+ ", page " + k);
            pdfDoc.addPage(donorPage);
        }
    }

    const linkSource = await pdfDoc.saveAsBase64({ dataUri: true });
    const downloadLink = document.createElement("a");
    const fileName = `${title.innerHTML}.pdf`;
    downloadLink.href = linkSource;
    downloadLink.download = fileName;
    downloadLink.click();

    downloadBUtton.innerHTML = "下载完成"
    downloadBUtton1.innerHTML = "下载完成"
}


function download() {
    taoPageCount = pageCount
    if (!taoPdfs) {
        taoPdfs = urls
    }
    if (!taoNextPageStr) {
        taoNextPageStr = nextPageStr
    }
    if (taoLoadedPage >= taoPageCount) {
        getPdfFile()
        return
    }
    jQuery.getJSON("//" + ajurl + "/home/IndexTaoDocpdf?from=pc_" + pid + "&trt=" + trt + "&furl=" + taoNextPageStr + "&callback=?", function (a) {
        console.log(a)
        if (a.msg == "等待") {
            download()
            return
        }
        if (taoPageCount == 0) {
            taoPageCount = a.pageNum
        }
        taoNextPageStr = a.next;
        if (a.PdfStatus == 2) {
            return
        }
        url = "https:" + EiePQRNA(a.imgs[0], a.s)
        var url2
        $.get({
            url: url,
            // async: false,
            success: function (res) {
                url2 = atob(res.file);
                taoPdfs.push(url2)
                taoLoadedPage += a.valid;
                downloadBUtton.innerHTML = "下载" + taoLoadedPage + "/" + taoPageCount
                downloadBUtton1.innerHTML = "下载" + taoLoadedPage + "/" + taoPageCount
                download()
            }
        })
    });
}