您的位置:

js打印自身代码(js如何打印)

js打印自身代码(js如何打印)

更新:

本文目录一览:

JS-打印word的程序

JS-打印word的模板程序

我们在做项目中经常遇到“打印表格”的功能,在此介绍一下我所用过的打印方法。

一、比较简单的做法,word另存转化为html文件的方式。分析如下:

1、首先我们需要在office中用wrod画好文件的模板,然后将其另存为thm网页形式。

2、将其改为jsp页面,这样我们就可以文件中使用后来传过来的变量值。此时就是我们传统的jsp方式,后台定义参数,然后前台获取,将变量值写在我们需要显示的地方。

3、对于表格,我们可以用循环来控制。

4、这样做打比较简单,缺点word模板不能修改,一旦表格做个微小的变化,那我们的工作量也不小,因为word转化后的代码很难读懂,要在代码上控制其样式,是相当的困难,所以不推荐这种做法。

(注:1、 在做模板时,我们可以先在需要显示变量值的地方首先定义好值,然后在jsp中直接替换就行。

2、在jsp页面中,在首先加入“%@ page contentType="application/msword;charset=UTF-8"%”, 以标识此页面为word文件。

3、如果需要点击时直接打开word文件,而非弹出“保存、打开”对话框,则需要删除“xmlns:w="urn:schemas-microsoft-com:office:office"”代码即可。

下面我们介绍另一种更常用的方法,此方法的有点是:修改word模板文件,不会影响程序。

二、用JS控制的打印方式,具体如下:

1、首先画word模板,在需要动态显示内容的地方插入“标签”。方法如下:在word中,选中需要被替换的内容--插入--书签,为其定义好名字即可,其它类似。

2、将做好的模板文件另存为模板dot文件。

做到这基本就差不多了,接下来就是后台代码发挥的时候了。

3、在后台封装参数值。

4、调用JS函数打印。

为了更为直观的介绍,下面用一完整的例子介绍。

先把代码贴出来:

1、JS模板文件,适用范围:

a. 根据文档文件,所有要显示的内容都定义为书签。

b. 纯表格文件。如果为多个表格或表格中嵌套表格,则需要稍加修改。

c. 文档、表格混搭型。

代码如下:

/** * 得到 文件模板的目录 * @param {} fileName * @return {} */ function getFileTemplatePath(fileName){ var path = "/page/printTemplate/" + fileName + ".dot"; var url="http://"+window.location.hostname + ":" + window.location.port+ this.getContextPath() + path; return url; } /** * 调出word模板,并为标签赋值 * @param {} jsonObj json对象 * @param {} fileName 所要打开的word文件名 */ function printWord(jsonObj,fileName){ var word=new ActiveXObject("Word.Application"); word.Visible=true; var url= this.getFileTemplatePath(fileName); word.Documents.add(url) for(i=0;ijsonObj.length;i++){ if ((jsonObj[i].text)!="list"){ range=word.ActiveDocument.Bookmarks(jsonObj[i].text).Range; range.text=jsonObj[i].value; }else{ var myTable=word.ActiveDocument.Tables(1); var rowsCount = myTable.Rows.Count; var iRow=2; for(j=0;jjsonObj[i].value.length;j++){ if (iRow rowsCount){ myTable.Rows.Add(); } var length = jsonObj[i].value[j].length; for(var k=0; klength; k++){ myTable.Rows(iRow).Cells(k + 1).Range.Text=jsonObj[i].value[j][k].value; } iRow ++; } } } word.Visible=true; }

2、看到代码就会明白,这段代码需要一个JSON类型的参数。

下一步我们所做的工作就是要在JSON上做文章了。 附后台代码(封装JSON,java)

类:PrintJSONObjectSet

import org.json.JSONArray; import org.json.JSONObject; public class PrintJSONObjectSet { private JSONArray ja; public PrintJSONObjectSet(){ ja = new JSONArray(); } public JSONArray getJSONArray(){ return ja; } public JSONObject json(Object key, Object value) throws Exception{ JSONObject jo = new JSONObject(); value = "".equals(value) || value == null "" : value; jo.put("text", key); jo.put("value", value); return jo; } public void put(Object key, Object value) throws Exception{ ja.put(json(key,value)); } public void put(Object obj){ ja.put(obj); } }

打印封装的方法:

/** * 打印出国(境)证明 * @return * @throws Exception */ public String printChuGuoJingZhengMing() throws Exception{ JSONArray ja = new JSONArray(); GroupInfo group = this.getGroupInfo(); String[] countrys = this.getCountrys(); if(countrys != null){ for(int c=0; ccountrys.length; c++){ PrintJSONObjectSet js = new PrintJSONObjectSet(); SeedGroupRef seed = seedImpl.getCzcz(getGroupInfoId(),countrys[c]); js.put("year", seed.getFileYear()); js.put("fileNum", seed.getFileNum()); js.put("leader",group.getLeader()); js.put("groupCount", group.getGroupCount()); js.put("country",countrys[c]); js.put("dispCode",getDispCode()); js.put("printYear", DateFunc.getPrintYear()); js.put("printMonth", DateFunc.getPrintMonth()); js.put("printDay", DateFunc.getPrintDay()); PrintJSONObjectSet js2 = new PrintJSONObjectSet(); ListMemberInfo memberList = this.getIsSefMembers(); MemberInfo member; for(int i=0; imemberList.size(); i++){ PrintJSONObjectSet js3 = new PrintJSONObjectSet(); member = memberList.get(i); js3.put("name1",member.getName()); js3.put("passportNum1",member.getPassportNum()); if(++i memberList.size()){ member = memberList.get(i); js3.put("name2",member.getName()); js3.put("passportNum2",member.getPassportNum()); } js2.put(js3.getJSONArray()); } js.put("list", js2.getJSONArray()); ja.put(js.getJSONArray()); } } PrintWriter out; System.out.println(ja.toString()); try{ out = response.getWriter(); out.print(ja.toString()); out.close(); }catch(Exception e){ e.printStackTrace(); } return null; }

对于JSON的说明:

1、最外层为一个JSONArray,这个JSON中包含多个JSONArra,其控制文档的数量。

2、在第二层JSONArray中,包含多个JSONObject。其中每个JSONObject包含一个JSONObject对象。

每个JSONObject对象以{"text":"name","value":"张三"}的形式存储。

3、遇到表格时,则在第二个JSONArray中,封装类型{"text":"list","value":[[{"text":"","value:""}]]}形式。

也就是说此时的JSONObject的值必须为list,只有这样,JS中才能将其作为表格来输入。

其中在名为 list 的JSONObject对象中,包含多个JSONArray,用来控制行数。

每个JSONArray中包含多个类型第2条中形式的JSONObject对象,用来控制列数。

调用方法:(采用aJax)

Ext.Ajax.request({ url : href, success : function(response, options) { var responseText = response.responseText; var jsonObj=eval('(' + responseText + ')'); for(var i=0; ijsonObj.length; i++){ printWord(jsonObj[i],'chuGuoJingZhengMing'); } }, failure : function(response, options) { alert("fail!"); } });

例子中的word文件:

如果国家为多个时,则会打印出多个文件。

对于代码的说明:

在后台代码封装中,我们将 书签名 和 值 封装为一个JSON对象,这样JS处理中,我们就方便了,不用再逐个写出每个书签的`名字,供其查找、然后赋值。

在后台代码中,我这里在打印时需要根据国家来确定所要打印的文档数量,如果为多个国家则要打印出多个文档,所以在后台封装,最外层又加了一个JSONArray,JS中也多了一道循环,这个可以根据需要自己调整。

特殊情况下,需要我们单独处理,如多个表格的情况下,或者表格嵌套表格。

这里说一下表格嵌套的情况下,如果获得被嵌套的表格对象。

如:var myTable=word.ActiveDocument.Tables(1).Rows(1).Cells(1).Tables(1);

这里得到的是文档中第一个表格的第一行的每一列中的每一个表格对象,其它类似。

range=word.ActiveDocument.Bookmarks("name").Range 的意思是 得到文档中 书签名为“name”的对象。

range.text=“张三” 为其赋值为 张三。

这里采用的是dot文件,因为dot文件存在于服务器上,如果使用doc文件作为模板文件的话,在多人访问时,会出现线程锁死的情况,故采用dot文件。

附加一段生成好的JSON串:

[ [ {"text":"year","value":2011}, {"text":"fileNum","value":5}, {"text":"leader","value":"彭瓒"}, {"text":"groupCount","value":5}, {"text":"country","value":"俄罗斯"}, {"text":"dispCode","value":"dispCode"}, {"text":"printYear","value":"2011"}, {"text":"printMonth","value":"04"}, {"text":"printDay","value":"07"}, {"text":"list","value":[[ {"text":"name1","value":"彭瓒"}, {"text":"passportNum1","value":""}, {"text":"name2","value":"郭沁明"}, {"text":"passportNum2","value":""} ], [ {"text":"name1","value":"张三五"}, {"text":"passportNum1","value":""}, {"text":"name2","value":"彭瓒"}, {"text":"passportNum2","value":""} ], [ {"text":"name1","value":"郭沁明"}, {"text":"passportNum1","value":""}, {"text":"name2","value":"张三五"}, {"text":"passportNum2","value":""} ] ] } ], [ {"text":"year","value":2011}, {"text":"fileNum","value":7}, {"text":"leader","value":"彭瓒"}, {"text":"groupCount","value":5}, {"text":"country","value":"韩国"}, {"text":"dispCode","value":"dispCode"}, {"text":"printYear","value":"2011"}, {"text":"printMonth","value":"04"}, {"text":"printDay","value":"07"}, {"text":"list","value":[ [ {"text":"name1","value":"彭瓒"}, {"text":"passportNum1","value":""}, {"text":"name2","value":"郭沁明"}, {"text":"passportNum2","value":""} ], [ {"text":"name1","value":"张三五"}, {"text":"passportNum1","value":""}, {"text":"name2","value":"彭瓒"}, {"text":"passportNum2","value":""} ], [ {"text":"name1","value":"郭沁明"}, {"text":"passportNum1","value":""}, {"text":"name2","value":"张三五"}, {"text":"passportNum2","value":""} ] ] } ] ]

;

js得到的数据如何打印出来

!doctype html

html

head

meta charset="utf-8"

title打印测试/title

/head

body

div id="printDIV"打印内容放在这/div

script type="text/javascript" language="javascript"

var str = document.getElementById("printDIV").innerHTML;

var printWin=window.open("打印窗口", "_blank");

printWin.document.write(str );

printWin.document.close();

printWin.print();

printWin.close();

/script

/body

/html

使用Javascript怎样自动打印页面

1、js实现(可实现局部打印)

[html] view plain copy

input id="btnPrint" type="button" value="打印" onclick="javascript:window.print();" /

input id="btnPrint" type="button" value="打印预览" onclick=preview(1) /

style type="text/css" media=print

.noprint{display : none }

/style

p class="noprint"不需要打印的地方/p

script

function preview(oper)

{

if (oper 10)

{

bdhtml=window.document.body.innerHTML;//获取当前页的html代码

sprnstr="!--startprint"+oper+"--";//设置打印开始区域

eprnstr="!--endprint"+oper+"--";//设置打印结束区域

prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //从开始代码向后取html

prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//从结束代码向前取html

window.document.body.innerHTML=prnhtml;

window.print();

window.document.body.innerHTML=bdhtml;

} else {

window.print();

}

}

/script

pXXXXX/p

!--startprint1--要打印的内容!--endprint1--

再加个打印按纽 onclick=preview(1)

2、调用windows底层打印,报安全警告,不建议使用(不支持局部打印)

[html] view plain copy

HTML

HEAD

TITLEjavascript打印-打印页面设置-打印预览代码/TITLE

META http-equiv=Content-Type content="text/html; charset=gb2312" /

SCRIPT language=javascript

function printsetup(){

// 打印页面设置

wb.execwb(8,1);

}

function printpreview(){

// 打印页面预览

wb.execwb(7,1);

}

function printit()

{

if (confirm('确定打印吗?')) {

wb.execwb(6,6);

}

}

/SCRIPT

/HEAD

BODY

DIV align=center

OBJECT id=wb height=0 width=0

classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 name=wb/OBJECT

INPUT onclick=javascript:printit() type=button value=打印 name=button_print /

INPUT onclick=javascript:printsetup(); type=button value=打印页面设置 name=button_setup /

INPUT onclick=javascript:printpreview(); type=button value=打印预览 name=button_show /

一按开始的减肥了卡时间段

/DIV

/BODY

/HTML

3、jQuery实现(支持局部打印)

[html] view plain copy

script type="text/javascript" src="jquery-1.4.2.min.js"/script

script type="text/javascript" src="jquery.PrintArea.js"/script

script

$(document).ready(function(){

$("input#biuuu_button").click(function(){

$("div#myPrintArea").printArea();

});

});

/script

input id="biuuu_button" type="button" value="打印"/input

div id="myPrintArea".....文本打印部分...../div

点击打印控件 打印整个页面 js代码怎么实现

把要打印的内容放入一个 span或div,然后通过一个函数打印。

span id='div1'把要打印的内容放这里/span

p所有内容/p

div id="div2"div2的内容/div

a href="javascrīpt:printme()" target="_self"打印/a

scrīpt language="javascrīpt"

function printme()

{

document.body.innerHTML=document.getElementById('div1').innerHTML+'br/'+document.getElementById('div2').innerHTML;

window.print();

}

/scrīpt

js脚本打印的问题 代码如下 window.onload=function print(){ wi

你那个是递归调用,而且没有条件结束递归。所以导致“堆栈溢出”。

在JS中,全局的变量与函数实际都window对象的属性与方式,也就是说你定义function print这个就是window对象的一个方法,就相当于function window.print,所以你的代码成了:

window.onload=function window.print(){

window.print();

这就是递归调用,会一直调用下去,直到堆栈溢出

js打印自身代码(js如何打印)

本文目录一览: 1、JS-打印word的程序 2、js得到的数据如何打印出来 3、使用Javascript怎样自动打印页面 4、点击打印控件 打印整个页面 js代码怎么实现 5、js脚本打印的问题 代

2023-12-08
js打印按钮代码,js打印按钮代码大全

本文目录一览: 1、JavaScript 控制自定义打印页眉和页脚 2、js中单击按钮实现代码块功能 3、用js写一段自动点击按钮的代码 4、javascript单击按钮显示出现一段文字,代码怎么写?

2023-12-08
web打印js,web打印机

本文目录一览: 1、js控制横向打印web网页内容 2、web如何实现客户端打印在线文件(pdf,word,excel等),同时可以控制打印设置? 3、一个jave-web程序想知道下面代码,为什么j

2023-12-08
js实现网页打印,js打印图形

本文目录一览: 1、使用print-js打印当前页面内容 2、使用Javascript怎样自动打印页面 3、JS调用浏览器的打印功能 4、js调用浏览器的打印功能 5、js网页打印 6、js如何实现页

2023-12-08
js打印当前网页,如何打印当前网页

本文目录一览: 1、如何用js实现打印当前页面隐藏的内容?(注:只显示打印按钮,不显示打印内容。) 2、网页打印问题:用javascript调用print()打印网页,打印的时候会缩放,这样打印的效果

2023-12-08
js实现打印网页(js的打印)

本文目录一览: 1、js浏览器打印设置打印次数 2、js如何实现页面打印 3、使用print-js打印当前页面内容 js浏览器打印设置打印次数 普通报表工具栏上有打印按钮,点击该按钮会弹出打印页面。思

2023-12-08
js控制网页打印(js调用浏览器打印功能)

本文目录一览: 1、js浏览器打印设置打印次数 2、js调用浏览器的打印功能 3、请教一个在网页中js控制默认横向打印的问题 4、使用Javascript怎样自动打印页面 5、js如何实现页面打印 j

2023-12-08
用js代码打印菱形,编程打印菱形

本文目录一览: 1、求JavaScript打印菱形图案 2、如何从页面上输入数字来打印菱形 js 3、怎么用js输出一个菱形 4、JavaScript用for循环打印这个菱形。 求JavaScript

2023-12-08
js打印office文件,js打印pdf文件

本文目录一览: 1、手机里office做的表格可以打印吗?怎么打印? 2、word另存为网页然后在通过网页js打印格式不对 3、用JavaScript导出当前页面的word文档怎么做 4、js 打开w

2023-12-08
js实例对象打印(js 打印对象)

本文目录一览: 1、为什么node.js中有的对象不能够打印出来 2、求一个js方法,能够打印任何对象所有属性值。最好有参数可指定子对象的层次。 好用有现金红包报酬,多 3、js怎么打印object

2023-12-08
js打印web文件,js打印word文档

2022-11-23
js圆点怎么打印出来,怎么打出一个圆点

2023-01-08
java打印分辨率(java打印素数)

2022-11-12
php打印,php打印机自动打印

2022-11-25
怎么用js代码设置默认打印机(js直接打印)

本文目录一览: 1、JavaScript 怎么调用指定的打印机来打印 2、前端js怎么控制world或者wps默认横板打印 3、JS 怎么写 设置打印机名称自动打印的方法 JavaScript 怎么调

2023-12-08
Js打印输出

2023-05-21
js打印网页的特定内容三步搞定(js如何自动打印)

本文目录一览: 1、如何打印网页选中的内容 2、如何打印网页内需要的内容 3、js 怎么实现打印页面的一部分内容 4、怎么样快速规范地只打印出来网页中需要的文章内容? 5、如何让打印机只打印网页上的某

2023-12-08
php打印销售单(php 打印)

2022-11-09
javascript在网页上打印单张图片,打印网页上的图片

2022-12-01
javapdf打印,java打印文件

2023-01-09