保存道客巴巴文档 油猴脚本,自己写的
本帖最后由 笨笨家的唯一 于 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没法复制文字,所以稍微研究了一下,然后添加了一个提取文档文字的功能。
注意,这个只能提取文字,就是你在某个文档页面,拖鼠标能够选中的文字,复制到剪切板的文字是你所有所加载的页面中可以被选中的文字。如果是图片就没法了。
非常牛逼,亲测可用,方法如下
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();
})
})(); // ==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: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();
})
})();
到上面一行结束 这是啥情况呀 sxh705 发表于 2024-6-1 11:33
不知道为什么我这边不能用,改了一个能用的版本。
// ==UserScript==
一般情况下,提取文字不能用了是因为它的api改了一下:就是这个【strArr = window.Core.api._01;】,而我技术不到家,没学好怎么从网络获取api,所以提取文字的会用不了。但是打印文档应该没问题 真厉害,支持楼主 多谢大佬的无私分享啊 点击保存后无反应 可以了,谢谢!
有时打印时多出来一张空白页(第一页) 感谢楼主分享,牛啊 不错,分享一下了。 怎么 使用的 不错啊,好东西,正式我需要的 码住码住