TaoDouPDF

pdf download

// ==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()
            }
        })
    });
}