// ==UserScript== // @name 百度文库(wenku)在线下载PDF格式文件 // @namespace http://ekozhan.com // @version 0.2.0 // @description 百度文库文档页面打印PDF,chrome浏览器最好能安装一下 adblock 插件,下载后的pdf文件可以在 https://pdf2docx.com/zh/ 上转换成docx // @author eko.zhan, HelloCodeMing // @match *://wenku.baidu.com/view/* // @grant unsafeWindow // @license GPL-2.0 // @icon https://www.baidu.com/cache/icon/favicon.ico // @downloadURL https://update.greasyfork.icu/scripts/373334/%E7%99%BE%E5%BA%A6%E6%96%87%E5%BA%93%EF%BC%88wenku%EF%BC%89%E5%9C%A8%E7%BA%BF%E4%B8%8B%E8%BD%BDPDF%E6%A0%BC%E5%BC%8F%E6%96%87%E4%BB%B6.user.js // @updateURL https://update.greasyfork.icu/scripts/373334/%E7%99%BE%E5%BA%A6%E6%96%87%E5%BA%93%EF%BC%88wenku%EF%BC%89%E5%9C%A8%E7%BA%BF%E4%B8%8B%E8%BD%BDPDF%E6%A0%BC%E5%BC%8F%E6%96%87%E4%BB%B6.meta.js // ==/UserScript== ; (function () { 'use strict' //等待3秒页面加载完毕后再单击阅读更多按钮 window.setTimeout(function () { insert() }, 300) //insert print btn function insert() { if ($('#btnPrintStyle').length == 0) { $('head').append( [ '' ].join(' ') ) } $('.topbar-container').append('') $('body').append( [ '
', '常见问题:
', '1、点击免费下载后,如何打印成pdf文件?', '
2、文字重叠重影该如何解决?', '
3、图片空白,或者图片只有一半的情况如何处理?', '
4、页数超过100页的文档该如何打印成pdf?', '
5、打印出来的pdf文件里文字断裂,或者图片表格上下页分开如何处理?', '
' ].join('') ) var t = null $('.ez-btn').hover( function () { $('.ez-panel') .css({ top: $('.ez-btn').offset().top + 'px', left: $('.ez-btn').offset().left + 70 + 'px' }) .show() }, function () { if (t) window.clearTimeout(t) t = window.setTimeout(function () { $('.ez-panel').hide() }, 10 * 1000) } ) $('.ez-btn').click(function () { prePrint() }) $('body').mousedown(function (e) { if (e.button == 2) { //imgHandle() } return true }) } //main function function prePrint() { $('.ez-panel').remove() // add by eko.zhan at 2019-12-14 17:35 $('head') .find('link') .each((index, item) => { if ( $(item) .attr('href') .indexOf('/common_toc/common/style/main') != -1 ) { $(item).remove() } }) $('.read-all').click() $('.header-wrapper').remove() $('.no-full-screen').remove() $('.lazy-load').remove() $('.reader-topbar').remove() jQuery.fn.extend({ remove: function () { return false } }) var _h = document.body.scrollHeight, _tmp = 0 var _t = window.setInterval(function () { $(window).scrollTop(_tmp) _tmp = _tmp + 700 _h = document.body.scrollHeight if (_tmp > _h) { window.clearInterval(_t) doPrint() } }, 300) } /** * 图片处理,将 div background img 处理成 img 标签,利用 img clip:rect style 来处理图片 * 暂时未找到 img clip:rect 的规律 * //FIXME */ function imgHandle() { $('div.reader-pic-item').each(function (i, item) { var _style = $(item)[0].style var _imgUrl = _style.backgroundImage.substring( 5, _style.backgroundImage.length - 2 ) var imgPanel = '' $(item)[0].style.backgroundImage = null var p = document.createElement('p') $($(item)[0].attributes).each(function (i, attr) { $(p).attr(attr.nodeName, attr.nodeValue) }) $(p).append(imgPanel) $(item) .parent() .html(p) }) } /** * 调用浏览器打印 */ function doPrint() { //imgHandle() window.setTimeout(function () { window.print() }, 3000) } })()