jquery 打印方法 jquery打印网页
今天利用闲余时间研究了一下Jquery Jqprint插件,使用该Jquery脚本可以轻而易举的实现打印网页指定区域内容的功能: 例子一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Jquery Jqprint打印控件演示</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script language="javascript" src="./js/jquery-1.6.2.js"></script> <script language="javascript" src="./js/jquery.jqprint-0.3.js"></script> <style type="text/css"> html,body{margin:auto 15%;padding:0;} p{line-height: 18px;} </style> <script language="javascript"> function print(){ $("#printContainer").jqprint(); } </script> </head> <body> <div id="printContainer"> <center><p style="font-size: 21pt;font-weight: bold;">报任安书</p></center> <p> 太史公牛马走司马迁再拜言。少卿足下:曩者辱赐书,教以慎于接物,推贤进士为务。意气勤勤恳恳,若望仆不相师,而用流俗人之言。仆非敢如是也。请略陈固陋。阙然久不报,幸勿为过。</p> <p> 仆之先人,非有剖符丹书之功,文史星历,近乎卜祝之间,固主上所戏弄,倡优畜之,流俗之所轻也。假令仆伏法受诛,若九牛亡一毛,与蝼蚁何以异?而世又不与能死节者比,特以为智穷罪极,不能自免,卒就死耳。何也?素所自树立使然。人固有一死,或重于泰山,或轻于鸿毛,用之所趋异也。太上不辱先,其次不辱身,其次不辱理色,其次不辱辞令,其次诎体受辱,其次易服受辱,其次关木索、被棰楚受辱,其次剔毛发、婴金铁受辱,其次毁肌肤、断肢体受辱,最下腐刑极矣!传曰:“刑不上大夫。”此言士节不可不勉励也。猛虎处深山,百兽震恐,及在穽槛之中,摇尾而求食,积威约之渐也。故士有画地为牢,势不入;削木为吏,议不对,定计于鲜也。今交手足,受木索,暴肌肤,受榜棰,幽于圜墙之中。当此之时,见狱吏则头枪地,视徒隶则心惕息。何者?积威约之势也。及以至是,言不辱者,所谓强颜耳,曷足贵乎!且西伯,伯也,拘于羑里;李斯,相也,具于五刑;淮阴,王也,受械于陈;彭越、张敖,南向称孤,系狱具罪;绛侯诛诸吕,权倾五伯,囚于请室;魏其,大将也,衣赭衣、关三木;季布为朱家钳奴;灌夫受辱居室。此人皆身至王侯将相,声闻邻国,及罪至罔加,不能引决自裁,在尘埃之中,古今一体,安在其不辱也!此言之,勇怯,势也;强弱,形也。审矣,何足怪乎?且人不能早自裁绳墨之外,已稍陵迟,至于鞭棰之间,乃欲引节,斯不亦远乎!古人所以重施刑于大夫者,殆为此也。</p> <p> 夫人情莫不贪生恶死,念亲戚,顾妻子;至激于义理者不然,乃有所不得已也。今仆不幸,早失父母,无兄弟之亲,独身孤立,少卿视仆于妻子何如哉?且勇者不必死节,怯夫慕义,何处不勉焉!仆虽怯懦,欲苟活,亦颇识去就之分矣,何至自沉溺累绁之辱哉!且夫臧获婢妾,犹能引决,况若仆之不得已乎?所以隐忍苟活,幽于粪土之中而不辞者,恨私心有所不尽,鄙陋没世,而文采不表于后也。</p> <p> 古者富贵而名摩灭,不可胜记,唯倜傥非常之人称焉。盖西伯拘而演《周易》;仲尼厄而作《春秋》;屈原放逐,乃赋《离骚》;左丘失明,厥有《国语》;孙子膑脚,《兵法》修列;不韦迁蜀,世传《吕览》;韩非囚秦,《说难》、《孤愤》;《诗》三百篇,大底圣贤发愤之所为作也。此人皆意有所郁结,不得通其道,故述往事,思来者。乃如左丘无目,孙子断足,终不可用,退而论书策,以舒其愤,思垂空文以自见。</p> <p> 仆窃不逊,近自托于无能之辞,网罗天下放失旧闻,略考其行事,综其终始,稽其成败兴坏之纪。上计轩辕,下至于兹,为十表、本纪十二、书八章、世家三十、列传七十,凡百三十篇。亦欲以究天人之际,通古今之变,成一家之言。草创未就,会遭此祸,惜其不成,是以就极刑而无愠色。仆诚已著此书,藏之名山,传之其人,通邑大都。则仆偿前辱之责,虽万被戮,岂有悔哉!然此可为智者道,难为俗人言也。</p> <p> 且负下未易居,下流多谤议。仆以口语遇遭此祸,重为乡党所笑,以污辱先人,亦何面目复上父母之丘墓乎?虽累百世,垢弥甚耳!是以肠一日而九回,居则忽忽若有所亡,出则不知其所往。每念斯耻,汗未尝不发背沾衣也。身直为闺合之臣,宁得自引深藏于岩穴邪?故且从俗浮沉,与时俯仰,通其狂惑。今少卿乃教以推贤进士,无乃与仆私心剌谬乎?今虽欲自雕琢,曼辞以自饰,无益于俗,不信,适足取辱耳。要之死日,然后是非乃定。书不能悉意,略陈固陋。谨再拜。</p> </div> <center><input type="button" onclick="print()" value="打印文章"/></center> </body> </html> |
例子二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Jquery Jqprint打印控件演示</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script language="javascript" src="./js/jquery-1.6.2.js"></script> <script language="javascript" src="./js/jquery.jqprint-0.3.js"></script> <style type="text/css"> html,body{margin:auto 15%;padding:0;} p{line-height: 18px;} </style> <script language="javascript"> function print(){ $("#printContainer").jqprint({ debug: false, //如果是true则可以显示iframe查看效果(iframe默认高和宽都很小,可以再源码中调大),默认是false importCSS: true, //true表示引进原来的页面的css,默认是true。(如果是true,先会找$("link[media=print]"),若没有会去找$("link")中的css文件) printContainer: true, //表示如果原来选择的对象必须被纳入打印(注意:设置为false可能会打破你的CSS规则)。 operaSupport: true//表示如果插件也必须支持歌opera浏览器,在这种情况下,它提供了建立一个临时的打印选项卡。默认是true }); } </script> </head> <body> <div id="printContainer"> <center><p style="font-size: 21pt;font-weight: bold;">报任安书</p></center> <p> 太史公牛马走司马迁再拜言。少卿足下:曩者辱赐书,教以慎于接物,推贤进士为务。意气勤勤恳恳,若望仆不相师,而用流俗人之言。仆非敢如是也。请略陈固陋。阙然久不报,幸勿为过。</p> <p> 仆之先人,非有剖符丹书之功,文史星历,近乎卜祝之间,固主上所戏弄,倡优畜之,流俗之所轻也。假令仆伏法受诛,若九牛亡一毛,与蝼蚁何以异?而世又不与能死节者比,特以为智穷罪极,不能自免,卒就死耳。何也?素所自树立使然。人固有一死,或重于泰山,或轻于鸿毛,用之所趋异也。太上不辱先,其次不辱身,其次不辱理色,其次不辱辞令,其次诎体受辱,其次易服受辱,其次关木索、被棰楚受辱,其次剔毛发、婴金铁受辱,其次毁肌肤、断肢体受辱,最下腐刑极矣!传曰:“刑不上大夫。”此言士节不可不勉励也。猛虎处深山,百兽震恐,及在穽槛之中,摇尾而求食,积威约之渐也。故士有画地为牢,势不入;削木为吏,议不对,定计于鲜也。今交手足,受木索,暴肌肤,受榜棰,幽于圜墙之中。当此之时,见狱吏则头枪地,视徒隶则心惕息。何者?积威约之势也。及以至是,言不辱者,所谓强颜耳,曷足贵乎!且西伯,伯也,拘于羑里;李斯,相也,具于五刑;淮阴,王也,受械于陈;彭越、张敖,南向称孤,系狱具罪;绛侯诛诸吕,权倾五伯,囚于请室;魏其,大将也,衣赭衣、关三木;季布为朱家钳奴;灌夫受辱居室。此人皆身至王侯将相,声闻邻国,及罪至罔加,不能引决自裁,在尘埃之中,古今一体,安在其不辱也!此言之,勇怯,势也;强弱,形也。审矣,何足怪乎?且人不能早自裁绳墨之外,已稍陵迟,至于鞭棰之间,乃欲引节,斯不亦远乎!古人所以重施刑于大夫者,殆为此也。</p> <p> 夫人情莫不贪生恶死,念亲戚,顾妻子;至激于义理者不然,乃有所不得已也。今仆不幸,早失父母,无兄弟之亲,独身孤立,少卿视仆于妻子何如哉?且勇者不必死节,怯夫慕义,何处不勉焉!仆虽怯懦,欲苟活,亦颇识去就之分矣,何至自沉溺累绁之辱哉!且夫臧获婢妾,犹能引决,况若仆之不得已乎?所以隐忍苟活,幽于粪土之中而不辞者,恨私心有所不尽,鄙陋没世,而文采不表于后也。</p> <p> 古者富贵而名摩灭,不可胜记,唯倜傥非常之人称焉。盖西伯拘而演《周易》;仲尼厄而作《春秋》;屈原放逐,乃赋《离骚》;左丘失明,厥有《国语》;孙子膑脚,《兵法》修列;不韦迁蜀,世传《吕览》;韩非囚秦,《说难》、《孤愤》;《诗》三百篇,大底圣贤发愤之所为作也。此人皆意有所郁结,不得通其道,故述往事,思来者。乃如左丘无目,孙子断足,终不可用,退而论书策,以舒其愤,思垂空文以自见。</p> <p> 仆窃不逊,近自托于无能之辞,网罗天下放失旧闻,略考其行事,综其终始,稽其成败兴坏之纪。上计轩辕,下至于兹,为十表、本纪十二、书八章、世家三十、列传七十,凡百三十篇。亦欲以究天人之际,通古今之变,成一家之言。草创未就,会遭此祸,惜其不成,是以就极刑而无愠色。仆诚已著此书,藏之名山,传之其人,通邑大都。则仆偿前辱之责,虽万被戮,岂有悔哉!然此可为智者道,难为俗人言也。</p> <p> 且负下未易居,下流多谤议。仆以口语遇遭此祸,重为乡党所笑,以污辱先人,亦何面目复上父母之丘墓乎?虽累百世,垢弥甚耳!是以肠一日而九回,居则忽忽若有所亡,出则不知其所往。每念斯耻,汗未尝不发背沾衣也。身直为闺合之臣,宁得自引深藏于岩穴邪?故且从俗浮沉,与时俯仰,通其狂惑。今少卿乃教以推贤进士,无乃与仆私心剌谬乎?今虽欲自雕琢,曼辞以自饰,无益于俗,不信,适足取辱耳。要之死日,然后是非乃定。书不能悉意,略陈固陋。谨再拜。</p> </div> <center><input type="button" onclick="print()" value="打印文章"/></center> </body> </html> |
from:https://blog.51cto.com/u_16099297/6962748
View Detailsweb端js调用window.print()的回调函数(打印前和打印后的回调)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
$(function () { //定义打印前事件 var beforePrint = function () { console.log("打印前"); }; //定义打印后事件 var afterPrint = function () { console.log("打印后"); app.post('ba.service.CompanyService', 'updateCompany', { 'companyId': companyId, "autoRegStateCode":"40" }) .then(function (res) { }); } //监听window状态 if (window.matchMedia) { var mediaQueryList = window.matchMedia('print'); //为印添加事件 mediaQueryList.addListener(function (mql) { if (mql.matches) { beforePrint(); } else { afterPrint(); } }); } //打印前事件 window.onbeforeprint = beforePrint; //打印后事件 window.onafterprint = afterPrint; //执行打印 $(".print").click(function () { $(".print").hide() var newstr = document.getElementById("printPage").innerHTML; window.print(); $(".print").show() }) }); |
from:https://codeleading.com/article/96272527602/#google_vignette
View DetailsJDK动态代理(介绍理解,如何实现)
使用jdk的反射机制,创建对象的能力, 创建的是代理类的对象。 而不用你创建类文件。不用写java文件。
动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。
jdk动态代理,必须有接口,目标类必须实现接口, 没有接口时,需要使用cglib动态代理
View DetailsJava动态代理之一CGLIB详解
CGLIB(Code Generation Library)是一个开源、高性能、高质量的Code生成类库(代码生成包)。
它可以在运行期扩展Java类与实现Java接口。Hibernate用它实现PO(Persistent Object 持久化对象)字节码的动态生成,Spring AOP用它提供方法的interception(拦截)。
CGLIB的底层是通过使用一个小而快的字节码处理框架ASM,来转换字节码并生成新的类。但不鼓励大家直接使用ASM框架,因为对底层技术要求比较高。
View DetailsAspectJ入门
AOP的实现方式有两种:
AOP框架在编译阶段,就对目标类进行修改,得到的class文件已经是被修改过的。生成静态的AOP代理类(生成*.class文件已经被改掉了,需要使用特定的编译器)。以AspectJ为代表 —— 静态AOP框架。
AOP框架在运行阶段,动态生成AOP代理(在内存中动态地生成AOP代理类),以实现对目标对象的增强。它不需要特殊的编译器。以Spring AOP为代表。—— 动态AOP框架。
SpringAOP学习--Spring事务简介及原理
事务简介
前篇介绍了SpringAOP,Spring事务是SpringAOP一个典型的应用。
事务即数据库事务,指同一批次对数据的读写要么全成功,要么全失败,用以保证数据的一致性,是关系统数据库核心功能。编程中通过设置事务手动提交,然后根据情况选择提交事务或者回滚事务。
数据库中事务使用:
BEGIN;#开始事务
update table_name set name=’XXX’ where id=’XXX’;#执行数据库操作
COMMIT; #提交
ROLLBACK;#回滚
从HttpServletRequest中获取上传文件及参数的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
try { //下面这句必须加,不然报错 MultipartResolver resolver = new CommonsMultipartResolver(hsq.getSession().getServletContext()); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) hsq; //获取一起跟文件传过来的其他参数值 String id = multipartRequest.getParameter("id"); //获取上传上来的文件 Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); for (Map.Entry<String, MultipartFile> entry : fileMap.entrySet()) { MultipartFile file = entry.getValue(); String fileName = file.getOriginalFilename(); System.out.println(fileName); String path = "C:\\Users\\user\\Desktop\\" + fileName; file.transferTo(new File(path)); } } catch (Exception e) { e.printStackTrace(); } |
from:https://www.cnblogs.com/sanrenblog/p/15648871.html
View Detailsxhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题
之前用itext7将html导出为pdf,比较方便,代码较少,而且支持base64的图片。但是itext7是收费的,所以换成了xhtmlrenderer。
xhtmlrenderer自动引入依赖包itext2.0.8,而且不能再引入其他版本的itext,因为itext2.0.8是已经被废弃的,里面的很多方法在新版本已经没有了。
View DetailsSHA256安全散列算法(JAVA)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * SHA256安全散列算法 * * @author 冯龙生 */ public class Sha256Util { /** * 安全散列算法摘要 * * @param plainText 明文 * @return 密文 */ public static String encrypt(String plainText) { MessageDigest messageDigest; String result = ""; try { messageDigest = MessageDigest.getInstance("SHA-256"); messageDigest.update(plainText.getBytes(StandardCharsets.UTF_8)); result = byteToHex(messageDigest.digest()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return result; } /** * 将byte转为16进制 * * @param bytes 字节码 * @return 16进制字符串 */ private static String byteToHex(byte[] bytes) { StringBuilder result = new StringBuilder(); String temp; for (byte item : bytes) { temp = Integer.toHexString(item & 0xFF); if (temp.length() == 1) { result.append("0"); } result.append(temp); } return result.toString(); } public static void main(String[] args) { String sha256Str = encrypt("111111"); System.out.println(sha256Str); } } |
View Details
tkmybatis详细教程(一篇就明白)
tkmybatis 是对底层 sql 进行了抽象封装,不需要考虑 sql 怎么写,只需要按照逻辑思维,遵循 tkmybatis 的语法即可实现数据库操作。 本文适合对springboot项目结构有一定了解的读者。 本文的项目基础是一个demo项目(多模块的)。 1. 配置 1、添加 tkmybatis 的依赖
1 2 3 4 5 |
<dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency> |
2、创建 dao 层的 mapper 接口,每个接口都要继承 tk.mybatis.mapper.common.Mapper 接口。此接口的形式为 Mapper<T>,带了个泛型,此泛型一般指的是对应的 pojo 或者 domain。比如:
1 2 |
public interface HouseMapper extends Mapper<House> { } |
3、在 Application 启动类上添加 mapper 扫描注解,表示要扫描到 dao 层的 mapper 接口。 比如本项目的mapper接口就统一放在 com.dgh.dao 下面,用 @MapperScan(basePackages = "包名") 来指定。 附注:在项目启动时,springboot 会自动扫描 Application 启动类所在的当前目录以及下一级目录,一般 Application 启动类都放在根目录,所以在单一项目下,只要是在 Java 类上添加了注解,都能够默认被 springboot 扫描到,并被添加到 springboot 的容器中,一般不需要特别用 @ComponentScan 去指定 springboot 要扫描哪些目录。 本文之所以特地用 @ComponentScan 去指定了 service 层和 controller 层的目录,是因为本文的项目是一个多模块项目,service 层和 controller 层各自都是一个独立的模块,与 Application 启动类不在同一目录下。
1 2 3 4 5 6 7 8 9 |
@SpringBootApplication @MapperScan(basePackages = "com.dgh.dao") @ComponentScan(basePackages = "com.dgh.service") @ComponentScan(basePackages = "com.dgh.controller") public class ControllerApplication { public static void main(String[] args) { SpringApplication.run(ControllerApplication.class, args); } } |
4、tkmybatis 具体的使用是在 service 层,service 层又分为接口和接口实现类,具体就在接口实现类里面。 5、其它的代码、配置与普通的springboot项目一样。 2. tkmybatis的结构 下图是 tkmybatis 的结构图,圈中的是 Mapper 接口,是最底层的,也就意味着它继承了所有的功能。因此才有了 […]
View Details