笨笨家的唯一 发表于 2022-11-25 15:26

保存道客巴巴文档 油猴脚本,自己写的

本帖最后由 笨笨家的唯一 于 2024-1-17 15:20 编辑

经常要下道客巴巴的文档,每次都要操作一番,嫌麻烦,就搞了一个这个
才学js,写的不对的还请大佬指正
先预览全部文档,然后点【保存文档】,会调用打印框,选择【保存pdf】即可
直接新建一个油猴脚本,然后复制进去就可以啦!

// ==UserScript==
// @name         保存doc88文档
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description可以以PDF形式保存道客巴巴文档,还可以提取文档文字,先等加载完再点击,否则下不全!
// @author       You
// @match      *://www.doc88.com/*
// @grant      none
// ==/UserScript==

(function() {
    'use strict';
    let styleStr = '#save {display:flex;background-color:#1676FF;color:#fff;font-size:16px;position:fixed;left:4vw;top:5vh;border:none;outLine:none;z-index:10086;} #save div{padding:5px;cursor: pointer;} #save div:hover{background-color:#F6A04D}';
   let styleEle =document.querySelector('style')
    styleEle.innerHTML += styleStr;
    document.body.appendChild(styleEle);
    let box = document.createElement('div');
    box.id = 'save'
    let saveBtn = document.createElement('div');
    saveBtn.innerHTML = '保存';
    box.appendChild(saveBtn);
    let textBtn = document.createElement('div');
    textBtn.innerHTML = ' 提取';
    box.appendChild(textBtn);
    document.body.appendChild(box);
    saveBtn.addEventListener('click',()=>{
      alert('确定每一页都加载完了哦,不然下载的不全')
       let divs = document.querySelectorAll('div');
       let ppts = document.querySelector('#pageContainer');
       let pptCanvas = ppts.querySelectorAll('.inner_page');
       divs.forEach(div=>{
          div.style.display = 'none';
       })
       let newDiv = document.createElement('div');
       pptCanvas.forEach(canvas=>{
          newDiv.appendChild(canvas);
      })
      document.body.appendChild(newDiv);
       window.print();
    })
   textBtn.addEventListener('click',()=>{
      let textStr = '';
      let strArr = window.Core.api._01;
      strArr.forEach(str=>{
         textStr += str;
      })
      const textarea = document.createElement('textarea');
            textarea.value = textStr;
            document.body.appendChild(textarea);
            textarea.select();
            if (document.execCommand('copy')) {
                  document.execCommand('copy');
            }
            document.body.removeChild(textarea);
      alert("已将全部文字复制到剪切板,随便去哪粘贴吧");
   })
})();

补充说明一下,使用该脚本需要先安装【油猴】(Tampermonkey)插件,具体的操作步骤每款浏览器各不相同,大家自己百度一下。
安装好插件之后,点击【添加新脚本】,把上面的代码复制进去,就可以了
如果脚本无法运行,可能是浏览器兼容问题,能力有限解决不了。建议换谷歌浏览器吧
--------------------------------------------------------------------------------------------------
这里更新一下,最近老是在某巴巴下文档,下载的pdf没法复制文字,所以稍微研究了一下,然后添加了一个提取文档文字的功能。
注意,这个只能提取文字,就是你在某个文档页面,拖鼠标能够选中的文字,复制到剪切板的文字是你所有所加载的页面中可以被选中的文字。如果是图片就没法了。

CRSer 发表于 2022-11-28 09:53

非常牛逼,亲测可用,方法如下

1.新建一个油猴脚本(没有的需先在浏览器安装),然后全选复制下面代码,覆盖脚本原本的模板(代码整合楼主和二楼)
2.先预览全部文档,然后点左侧蓝色【点击保存】,会调用打印框,在目标打印机选项栏,选择【保存pdf】即可
提醒:一定要等全部预览加载完再下载,不然有空白页!!!

// ==UserScript==
// @name      保存道客巴巴文档
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description保存道客巴巴文档
// @AuThor       You
// @match      *://*.doc88.com/*
// @Icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant      none
// ==/UserScript==


(function() {

    'use strict';

    let styleStr = '#savePDF {display:block;padding:10px;background-color:#1676FF;color:#fff;font-size:18px;position:fixed;left:100px;top:100px;border:none;outLine:none}';

    let styleEle = document.createElement('style');

    styleEle.innerHTML=styleStr;

    document.body.appendChild(styleEle);

    let btn = document.createElement('div');

    btn.id='savePDF';

    btn.innerHTML = '点击保存';

    document.body.appendChild(btn);

    btn.addEventListener('click',()=>{

      alert('确定每一页都加载完了哦,不然下载的不全')

       let divs = document.querySelectorAll('div');

       let ppts = document.querySelector('#pageContainer');

       let pptCanvas = ppts.querySelectorAll('.inner_page');

       divs.forEach(div=>{

          div.style.display = 'none';

       })

       let newDiv = document.createElement('div');

       pptCanvas.forEach(canvas=>{

          newDiv.appendChild(canvas);

      })

      document.body.appendChild(newDiv);

       window.print();

    })

})();

dxaw2458 发表于 2022-11-26 21:28

// ==UserScript==
// @name      保存道客巴巴文档
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description保存道客巴巴文档
// @AuThor       You
// @match      *://*.doc88.com/*
// @Icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant      none
// ==/UserScript==

//下面加代码

tiger2008 发表于 2022-11-30 18:35

本帖最后由 tiger2008 于 2022-11-30 18:38 编辑

楼主的代码没问题。不行用下面这个。记得感谢楼主!
下附件还要扣积分吗,设置不好,直接贴下面了。记得感谢楼主!

从下面第一行开始:
// ==UserScript==
// @name      保存道客巴巴文档
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description保存道客巴巴文档
// @author       You
// @match       *://www.doc88.com/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant      none
// ==/UserScript==
(function () {
    'use strict';

    let styleStr = '#savePDF {display:block;padding:10px;background-color:#1676FF;color:#fff;font-size:18px;position:fixed;left:100px;top:100px;border:none;outLine:none}';

    let styleEle = document.createElement('style');

    styleEle.innerHTML=styleStr;

    document.body.appendChild(styleEle);

    let btn = document.createElement('div');

    btn.id='savePDF';

    btn.innerHTML = '点击保存';

    document.body.appendChild(btn);

    btn.addEventListener('click',()=>{

      alert('确定每一页都加载完了哦,不然下载的不全')

       let divs = document.querySelectorAll('div');

       let ppts = document.querySelector('#pageContainer');

       let pptCanvas = ppts.querySelectorAll('.inner_page');

       divs.forEach(div=>{

          div.style.display = 'none';

       })

       let newDiv = document.createElement('div');

       pptCanvas.forEach(canvas=>{

          newDiv.appendChild(canvas);

      })

      document.body.appendChild(newDiv);

       window.print();

    })

})();
到上面一行结束

木玉成约 发表于 2022-11-29 17:12

这是啥情况呀

笨笨家的唯一 发表于 2024-6-3 15:14

sxh705 发表于 2024-6-1 11:33
不知道为什么我这边不能用,改了一个能用的版本。

// ==UserScript==


一般情况下,提取文字不能用了是因为它的api改了一下:就是这个【strArr = window.Core.api._01;】,而我技术不到家,没学好怎么从网络获取api,所以提取文字的会用不了。但是打印文档应该没问题

qiuyu2019 发表于 2022-11-25 18:39

真厉害,支持楼主

xu2409457400 发表于 2022-11-25 18:56

多谢大佬的无私分享啊

tiger2008 发表于 2022-11-25 19:12

点击保存后无反应

tiger2008 发表于 2022-11-25 19:19

可以了,谢谢!
有时打印时多出来一张空白页(第一页)

TrueAndFalse 发表于 2022-11-25 19:30

感谢楼主分享,牛啊

lcylidong 发表于 2022-11-25 19:31

不错,分享一下了。

紫轩冰凌 发表于 2022-11-25 19:40

怎么 使用的

doyoudo莫 发表于 2022-11-25 19:55

不错啊,好东西,正式我需要的

guajun 发表于 2022-11-25 19:57

码住码住
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 保存道客巴巴文档 油猴脚本,自己写的