将w3cplus网站中的文章页面提取并导出为pdf文档

news/2024/5/10 0:08:19/文章来源:https://blog.csdn.net/weixin_33711641/article/details/85680662

  最近在看一些关于CSS3方面的知识,主要是平时看到网页中有很多用CSS3实现的很炫的效果,所以就打算系统的学习一下。在网上找到很多的文章,但都没有一个好的整理性,比较凌乱。昨天看到w3cplus网站中关于CSS3的一些文章,觉得讲解的比较细,所以就决定以此作为学习的模板,一步步开始。

  平时上下班在地铁上经常是拿着手机看小说新闻之类的,考虑到在手机端直接访问这些网页肯定会耗费很大的流量,所以最好是将这些文章下载下来放在手机里看,比如保存成图片或pdf当然是最好的选择。

  之前曾在园子里看到某前端高手通过js将博客园中的文章提取并利用chrome的打印功能,将网页直接保存成pdf文档,以此为灵感,就自己也来实现一下这个功能。

  先给出一下找到的这段js代码:

javascript:var el = $('.container');$("*").not(el.find('*')).hide();el.parents().andSelf().css({ width: 476, padding: 0, margin: 0, border: 'none', float: 'none', position: 'static' }).show().find('img').css({ maxWidth: 470, height: 'auto' });$('body').css({ background: '#fff', zoom: 1.1 });

  因为本人对前端不是很熟悉,所以也是一点点的尝试着来实现,下面给出实现的过程,也是为了在此做一个简单的记录:

<script>//模板 用于获取博客园文章主要内容并打印成pdf的js提取代码javascript:var el = $('.container');$("*").not(el.find('*')).hide();el.parents().andSelf().css({ width: 476, padding: 0, margin: 0, border: 'none', float: 'none', position: 'static' }).show().find('img').css({ maxWidth: 470, height: 'auto' });$('body').css({ background: '#fff', zoom: 1.1 });//测试后发现如果页面中没有明确引入jquery插件的话,需要将代码写到(function($){//js code })(jQuery); 中。javascript:(function ($) {var el = $('.container');$("*").not(el.find('*')).hide();el.parents().andSelf().css({ width: 476, padding: 0, margin: 0, border: 'none', float: 'none', position: 'static' }).show().find('img').css({ maxWidth: 470,height: 'auto' });$('body').css({ background: '#fff', zoom: 1.1 });})(jQuery);//报错javascript: (function ($) { var el = $('#page>.container'); $('body *').not(el.find('*')).hide(); el.find('#sidebar-second').remove(); })(jQuery);//可行 删除右侧边栏并设置左侧内容margin:0javascript: (function ($) { var el = $('#page>.container'); el.find('#sidebar-second').remove(); el.find('.main-wrap').css({ margin: 0 }); })(jQuery);//测试javascript: (function ($) { var el = $('#page>.container'); el.find('#sidebar-second').remove(); el.find('.main-wrap').css({ margin: 5 }); $('body *').not(el.parent().andSelf().find('*')).hide(); })(jQuery);//可行 想通过el.parent('#page').andSelf()的方式使div#page 显示,但无法精确定位到该div元素,所以采用先将整体hide,在将div#page显示的方法javascript: (function ($) { var el = $('#page>.container'); $('body *').not(el.parent().andSelf().find('*')).hide(); $('#page').show(); })(jQuery);//对上面一行的精简javascript: (function ($) { var el = $('#page>.container'); $('body *').not($('#page').find('*')).hide(); $('#page').show(); })(jQuery);//去除页面中所有的广告  el.find('[class="block block-block"]').remove();  所有的广告的class都是block block-block javascript: (function ($) { var el = $('#page>.container'); $('body *').not($('#page').find('*')).hide(); $('#page').show(); el.find('[class="block block-block"]').remove(); el.find('#sidebar-second').remove(); el.find('.main-wrap').css({ margin: 3 }); $('body').css({ padding: 3, zoom: 1.3, background: '#fff' }); })(jQuery);//第一版可用代码javascript: (function ($) { var el = $('#page>.container'); $('body *').not($('#page').find('*')).hide(); $('#page').show(); el.find('[class="block block-block"]').remove(); el.find('#sidebar-second').remove(); el.find('.main-wrap').css({ margin: 3 }); $('body').css({ padding: 3, zoom: 1.3, background: '#fff' }); })(jQuery);//在头部加上当前页面的标题和url链接地址javascript: (function ($) { var el = $('#page>.container'); $('body *').not($('#page').find('*')).hide(); $('#page').show(); el.find('[class="block block-block"]').remove(); el.find('#sidebar-second').remove(); el.find('.main-wrap').css({ margin: 0 }); $('body').css({ padding: 0, zoom: 1.3, background: '#fff' }); $('#breadcrumb').prepend(document.title + '<br\>' + window.location.href);})(jQuery);//设置所有code代码区的边框1px    打印时去掉背景,添加边框javascript: (function ($) { var el = $('#page>.container'); $('body *').not($('#page').find('*')).hide(); $('#page').show(); el.find('[class="block block-block"]').remove(); el.find('#sidebar-second').remove(); el.find('.main-wrap').css({ margin: 0 }); el.find('pre, pre code').css({ border: '1px solid #F5062B' }); $('body').css({ padding: 0, zoom: 1.3, background: '#fff' }); $('#breadcrumb').prepend(document.title + '<br\>' + window.location.href); })(jQuery);//对第一版中各部分代码的功能分析javascript: (function ($) {var el = $('#page>.container');//获取正文内容节点$('body *').not($('#page').find('*')).hide();//隐藏正文之外的其他内容$('#page').show();//上段将当前正文的父节点也隐藏了,显示出来el.find('[class="block block-block"]').remove();//移除正文中所有广告el.find('#sidebar-second').remove();//移除正文右侧边栏el.find('.main-wrap').css({ margin: 0 });//设置左侧正文全屏el.find('pre, pre code').css({ border: '1px solid #F5062B' });//设置页面中代码段边框$('body').css({ padding: 0, zoom: 1.3, background: '#fff' });//设置内容格式 放大1.3倍$('#breadcrumb').prepend(document.title + '<br\>' + window.location.href);//在页面头部添加当前的标题和url链接
        })(jQuery);//第二版 第一版打印出来的一个页面大小约1M多,需进行优化 //remove()掉顶部和底部的其他div 而不是hide()javascript: (function ($) { var el = $('#page>.container'); var bd = $('body'); bd.find('#header').remove(); bd.find('#branding').remove(); bd.find('#footer-col').remove(); bd.find('#footer').remove(); el.find('[class="block block-block"]').remove(); el.find('#sidebar-second').remove(); el.find('.main-wrap').css({ margin: 0 }); })(jQuery);//第二版测试版 经测试,remove()和hide()不会有太大体积上的差别javascript: (function ($) { var el = $('#page>.container'); var bd = $('body'); bd.find('#header').remove(); bd.find('#branding').remove(); bd.find('#footer-col').remove(); bd.find('#footer').remove(); $('body *').not($('#page').find('*')).hide(); $('#page').show(); el.find('[class="block block-block"]').remove(); el.find('#sidebar-second').remove(); el.find('.main-wrap').css({ margin: 0 }); el.find('pre, pre code').css({ border: '1px solid #F5062B' }); $('body').css({ padding: 0, zoom: 1.3, background: '#fff' }); $('#breadcrumb').prepend(document.title + '<br\>' + window.location.href); })(jQuery);//移除所有head部分的script标签javascript: (function ($) { var el = $('#page>.container'); var bd = $('body'); bd.find('#header').remove(); bd.find('#branding').remove(); bd.find('#footer-col').remove(); bd.find('#footer').remove(); $('html>head').find('script').remove(); $('body *').not($('#page').find('*')).hide(); $('#page').show(); el.find('[class="block block-block"]').remove(); el.find('#sidebar-second').remove(); el.find('.main-wrap').css({ margin: 0 }); el.find('pre, pre code').css({ border: '1px solid #F5062B' }); $('body').css({ padding: 0, zoom: 1.3, background: '#fff' }); $('#breadcrumb').prepend(document.title + '<br\>' + window.location.href); })(jQuery);//第二版发布版  移除html下的所有script标签javascript: (function ($) { var el = $('#page>.container'); var bd = $('body'); bd.find('#header').remove(); bd.find('#branding').remove(); bd.find('#footer-col').remove(); bd.find('#footer').remove(); $('html').find('script').remove(); $('body *').not($('#page').find('*')).hide(); $('#page').show(); el.find('[class="block block-block"]').remove(); el.find('#sidebar-second').remove(); el.find('.main-wrap').css({ margin: 0 }); el.find('pre, pre code').css({ border: '1px solid #F5062B' }); $('body').css({ padding: 0, zoom: 1.3, background: '#fff' }); $('#breadcrumb').prepend(document.title + '<br\>' + window.location.href); })(jQuery);//第二版功能分析javascript: (function ($) {var el = $('#page>.container');var bd = $('body');//找到body元素bd.find('#header').remove();//移除body中的#headerbd.find('#branding').remove();   bd.find('#footer-col').remove();bd.find('#footer').remove();$('html').find('script').remove();//移除html内的所有script标签$('body *').not($('#page').find('*')).hide();//将非内容区域均隐藏$('#page').show();//显示page标签部分el.find('[class="block block-block"]').remove();el.find('#sidebar-second').remove();el.find('.main-wrap').css({ margin: 0 });el.find('pre, pre code').css({ border: '1px solid #F5062B' });$('body').css({ padding: 0, zoom: 1.3, background: '#fff' });$('#breadcrumb').prepend(document.title + '<br\>' + window.location.href);})(jQuery);//第三版 针对于某些代码段太宽而覆盖的问题进行修改//chrome Ctrl+P 打印时默认选择A4纸格式打印,A4的默认像素是 分辨率96像素/英寸下,794*1123 详细参考://打印常识:A4纸张在显示器上应该要多少像素? - 菩提树下的杨过 - 博客园//http://www.cnblogs.com/yjmyzz/archive/2012/01/09/2316892.html//.page-inner 的padding 上下10px 左右0px 
javascript: (function ($) { var el = $('#page>.container'); var bd = $('body'); bd.find('#header').remove(); bd.find('#branding').remove(); bd.find('#footer-col').remove(); bd.find('#footer').remove(); $('html').find('script').remove(); $('body *').not($('#page').find('*')).hide(); $('#page').show(); el.find('[class="block block-block"]').remove(); el.find('#sidebar-second').remove(); el.find('.main-wrap').css({ margin: 0 }); el.find('.page-inner').css({ padding: '10px 0' }); el.find('pre, pre code').css({ border: '1px solid #F5062B' }); $('body').css({ padding: 0, zoom: 1.3, background: '#fff' }); $('#breadcrumb').prepend(document.title + '<br\>' + window.location.href); })(jQuery);//第三版 发布版javascript: (function ($) { var el = $('#page>.container'); var bd = $('body'); bd.find('#header').remove(); bd.find('#branding').remove(); bd.find('#footer-col').remove(); bd.find('#footer').remove(); $('html').find('script').remove(); $('body *').not($('#page').find('*')).hide(); $('#page').show(); el.find('[class="block block-block"]').remove(); el.find('#sidebar-second').remove(); el.find('.main-wrap').css({ margin: 0 }); el.find('.page-inner').css({ padding: '10px 0' }); el.find('pre, pre code').css({ border: '1px solid #F5062B' }); $('body').css({ padding: 0, zoom: 1.3, background: '#fff' }); $('#breadcrumb').prepend(document.title + '<br\>' + window.location.href); })(jQuery);</script>

 

那要怎样来使用这段代码呢?

  只要我们将上面的js代码段(目前是 第三版发布版),保存成chrome浏览器的书签,在w3cplus网站的文章页面中点击一下,就能提取出文章中主要的内容部分。然后通过快捷键Ctrl+P 调出打印窗口,推荐边框选项设置为“无”,取消勾选“背景图形”,然后点击“保存” 即可(也可根据个人喜好自定)。

现在,将导出的pdf文档传到手机里,就ok啦!


 

2015-2-13更新:

今天对上面的那段代码又进行了一下修改,增加了一些内容:完整代码如下:

javascript: (function($) {var el = $('#page>.container');var bd = $('body');bd.find('#header').remove();bd.find('#branding').remove();bd.find('#footer-col').remove();bd.find('#footer').remove();$('html').find('script').remove();$('body *').not($('#page').find('*')).hide();$('#page').show();el.find('[class="block block-block"]').remove();el.find('[id="BAIDU_DUP_wrapper_u1490106_0"]').remove();//去除百度联盟广告el.find('[id="node_footer"]').remove();//去除底部的上一篇、下一篇提示及分享的图标el.find('#sidebar-second').remove();el.find('.main-wrap').css({margin: 0});el.find('.page-inner').css({padding: '10px 0'});el.find('pre').css({'word-wrap': 'break-word','overflow': 'hidden'});//页面中如果有较长的代码会被遮盖,这里使其自动折行;虽然这样处理后看上去不是很美观,但至少保证完整性el.find('pre, pre code').css({border: '1px solid #F5062B'});$('body').css({padding: 0,zoom: 1.2,background: '#fff'});$('#breadcrumb').prepend(document.title + '<br\>' + window.location.href);
})(jQuery);

  主要的修改内容如上面代码中的注释:

  1. 有些页面中会有百度联盟的推广广告,看上去非常反感,直接去掉;
  2. 去除了页面底部的上一篇、下一篇提示及分享到的图标;
  3. 页面中较长的代码段会超出页面而被遮盖,这里通过css来使其自动折行;

如果还有其他修改的可以自行增加,这段代码也很简单,很容易理解。

附上用Chrome打印时的配置: 这里我选择的是A3纸张大小 分辨率72下,对应像素为:1191*842px  浏览器宽度1100px .

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_775709.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

aix oracle rac搭建,调整AIX - AIX6.1安装Oracle RAC经历_数据库技术_Linux公社-Linux系统门户网站...

很早之前听说AIX上的可调整的参数很少。且见我做了哪些事?(总体感觉aix在系统管理&#xff0c;配置方面是很方做便的)1、遇到最严重的问题&#xff1a;操作系统关机后&#xff0c;就不能启动到这操作系统了。(天哪&#xff0c;这是什么事道&#xff01;)原来这次的主机没有配置…

网站不稳定关服务器什么原因,什么原因导致网站排名不稳定呢

如果我们要想处理好导致网站关键词排名不稳定的现象&#xff0c;我们就得先找出导致问题发生的原因。相信多的小伙伴在对网站进行了一段时间的优化之后发现&#xff0c;网站关键词排名总是出现波动不够稳定。我们就得针对这种情况做出一些改进&#xff0c;不然网站排名不停动摇…

网站服务器开创云,开创云服务器

开创云服务器 内容精选换一换如果Linux操作系统弹性云服务器未安装密码重置插件&#xff0c;可以参见本节内容重新设置密码。本节操作重置的是root用户的密码&#xff0c;您可以重置完root密码后登录云服务器后再更换密钥或重置非root用户的密码。Windows操作系统请参见重置Win…

多个html页面复用导航栏,使用webpack从0搭建多入口网站脚手架,可复用导航栏/底部通栏/侧边栏,根据页面文件自动更改配置,支持ES6/Less...

之前只知道webpack很强大&#xff0c;但是一直没有深入学习过&#xff0c;这次从头看了一下教程&#xff0c;然后从0开始搭建了一个多入口网站的开发脚手架&#xff0c;期间遇到过很多问题&#xff0c;所以有心整理一下&#xff0c;希望能给大家一点帮助。多HTML网站使用webpac…

巧用ELK快速实现网站流量监控可视化

前言 本文可能不会详细记录每一步实现的过程&#xff0c;但一定程度上可以引领小伙伴走向更开阔的视野&#xff0c;串联每个环节&#xff0c;呈现予你不一样的效果。 业务规模 8个平台100台服务器10个集群分组微服务600用户N 面临问题 随着分布式微服务容器技术的发展&…

gpu服务器跑网站,gpu服务器跑深度学习

gpu服务器跑深度学习 内容精选换一换GPU加速型云服务器(GPU Accelerated Cloud Server, GACS)能够提供强大的浮点计算能力&#xff0c;从容应对高实时、高并发的海量计算场景。GPU加速型云服务器包括G系列和P系列两类。其中&#xff1a;G系列&#xff1a;图形加速型弹性云服务器…

如何通过优化主页大小,将网站大小减少 62%

什么是图像压缩&#xff1f; 压缩图像是指在保持可接受的视觉质量水平的同时减小图像文件的大小。我使用imagemin来压缩我网站上的图像。 要使用 imagemin&#xff0c;请确保已安装了 Node.js&#xff0c;然后打开终端窗口&#xff0c;cd 到项目的文件夹&#xff0c;并运行以…

5个常用的上传图片进行搜索的网站

1.http://www.tineye.com/ 最常用的图片搜索引擎&#xff0c;一般需要尽可能的接近原图的文件才能锁定图片网址&#xff0c;不过准确度极高。目前缺点是图片收录主要为欧美地区&#xff0c;而且收录量也不是很大。 2.http://www.gazopa.com/ 如图所示相似图片搜索&#xff0c;想…

一个知名网站的微服务架构最佳实现

译者语&#xff1a;如果你的项目正在从单体升级为微服务而忧心&#xff1b;或者你在实践微服务过程中手忙脚乱&#xff0c;本文都是你不容错过的好文。 微服务架构的目标是帮助工程团队更快、更安全、更高质量地交付产品。拆分服务允许团队快速迭代的同时&#xff0c;保证了对系…

创业之前,网站先行

可能你们还没有准备好向世人展示你们的产品&#xff0c;但你们可以先做一些前期工作&#xff0c;先为产品搭建个网站&#xff0c;做好形象工作。我并不是说创业公司都不可以在暗地里开发自己的产品&#xff0c;直到产品成型后才公之于众。但我觉得&#xff0c;如果你已经为你的…

IT创业失败案例解析 - 第四篇 (一家失败的招聘网站)

原文标题&#xff1a;My eHarmony for Hiring Failure&#xff08;查看原文推荐&#xff09; 原文作者&#xff1a;eHarmony 双语对照 前几天我通读了我最新博文的评论&#xff0c;它着实吸引了很多评论&#xff0c;像其他一些带有煽动性标题的文章一样&#xff0c;最终&#x…

linux 绑定域名到网站目录,教你绑定域名到你空间的子目录(亲测可用)

近日脑洞大开&#xff0c;Project Ai需要一个论坛&#xff0c;然而为了装逼优雅&#xff0c;我想用个二级域名绑定到我论坛。但万网的虚拟主机默认没绑定域名到子目录这个功能的.中间省略经过一番折腾后&#xff0c;我发现了一个方法(亲测万网可用)其实原理也很简单&#xff0c…

php网站程序哪个好,php的cms系统哪个好

php的cms系统哪个好&#xff1f;国内常见的CMS有dedecms、PHPCMS、WordPress、帝国cms、5UCMS等。相对较好的应该属帝国cms了。帝国cms非常老牌的CMS&#xff0c;就如同该CMS官网介绍的安全、强大、稳定、灵活。安全性&#xff1a;高&#xff0c;姜就是老的辣&#xff0c;老牌的…

【转载】一次面试引发的思考(中小型网站优化思考)

前言 故事的起因是这样的&#xff0c;由于本人地处偏僻工作地点在美丽的冰城哈尔滨虽然地方很美丽&#xff0c;但是这里的软件行业实在是算不上“美丽”&#xff0c;这么多年由于个人原因或者公司原因经常换工作&#xff0c;因为这里都是中小型公司&#xff0c;没有什么大公司。…

tp5网站 服务器部署,tp5云服务器部署

tp5云服务器部署 内容精选换一换SAP B1的部署方案如图1所示。说明如下&#xff1a;VPC网络&#xff1a;为了保证网络的安全&#xff0c;SAP B1系统中所有节点在一个VPC网络内&#xff0c;且所有节点应属于同一个AZ(Available Zone)。公网子网区&#xff1a;NAT(Network Address…

html 隐藏广告代码大全,JS广告代码_JS广告代码大全_js特效代码_js特效代码大全 - 懒人建站...

网站设置点击任何地方弹出新页面广告只弹出&#xff0c;可指定时间间隔。利用Cookie记忆&#xff0c;超过指定时间刷新页面广告会再次生效。参数说明&#xff1a; href:http://www.51xuediannao.com/, //链接地址&#xff0c;必须配置成你的地址 target:_blank, zIndex:9999999…

利用 IIS日志追查网站入侵者

<script type"text/javascript"></script> <script type"text/javascript" src"http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>以前黑站黑了很多&#xff0c;但是就没有想过会不会被追踪到&…

nginx配置多个ssl证书_给自己的网站主页配置ssl证书

使用https 可以防止数据在传输过程中产生一些不必要的泄露&#xff0c;未 的页面在经过ssl证书的签发后会变成https开头&#xff0c;下面记录一下配置https加密的整个过程购买域名首先第一步我们为了防止自己的公网ip暴露出去&#xff0c;需要给自己的网站设定一个全球唯一的域…

网站搭建教程(详细步骤)

文章目录网站组成一、服务器二、网站程序三、域名空间基本介绍网站空间如何购买空间&#xff08;云虚拟主机&#xff09;如何登陆服务器网站创建安装宝塔并配置信息云虚拟机安装宝塔修改账号密码安装软件创建站点上传程序创建多个链接网站组成 一、服务器 什么是服务器? 我…

25台服务器怎样支撑世界第54大网站

StackOverflow是一个IT技术问答网站&#xff0c;用户可以在网站上提交和回答问题。当下的StackOverflow已拥有400万个用户&#xff0c;4000万个回答&#xff0c;月PV5.6亿&#xff0c;世界排行第54。然而值得关注的是&#xff0c;支撑他们网站的全部服务器只有25台&#xff0c;…