首页 > 编程知识 正文

web前端开发实例(web前端与html5有什么区别)

时间:2023-05-06 10:22:20 阅读:69611 作者:4488

8种机械键盘轴体的比较

本人,买写代码的键盘,红轴和茶轴怎么选?

背景需求为基于web现代浏览器的电子表单的统一印刷(规格固定)、带各种条形码的文件)规格范围不固定); 如下所示

网络印刷技术研究

浏览器的菜单打印功能

这是最简单的,只需单击页面上的打印菜单,但问题最多,基本上不能满足用户的需要。 例如,不能正确分页,有打半行字的风险; 换纸打印的格式和页面显示的格式相差太大; 页眉页脚也必须从菜单中设置。 这个方案最大的优点是不需要编写代码,点击打印就可以了。

window.print (

这实际上是浏览器打印功能菜单的程序调用。 不能像单击打印功能菜单一样准确地分开页面或设置纸张。 套装问题更是不成问题。 但是,用户不需要单击菜单,就可以从网页的按钮和链接中调用。

并且,该方法提供印刷前和印刷后的事件onbeforeprint、onafterprint。 您可以在打印前重新编辑某些格式,将其发送为仅打印,然后在打印后处理并返回。 1

2

3

4

5

6

7

8function .onbeforeprint (

{

}

function .onafterprint (

{

//释放隐藏的要素

}

事实上,很多用户都在用这种方法打印,但这种方法最致命的缺点是无法设置打印参数,如纸张类型、边距和打印机选择。

打印excel导出pdf文件

通过将需要打印的数据导出到excel文件或导出到pdf文件,打开并重新打印excel或pdf文件,可以实现准确的打印。 虽然可以夹克,但excel和adobe软件需要在客户端安装,操作也很麻烦。 此外,可以重新修改和编辑导出的excel文件。 普通用户还必须能够向系统提供此导出方法并直接打印

纯activex控件

此方案实际上是创建c/s打印控件,将其嵌入到页面中,然后将打印的数据加载到控件中进行打印。 该方案的优点是打印精度高,可以实现分页、打印参数的设定等。 但是缺点也很明显,嵌入activex控件破坏了web APP应用的整体html样式,而且这种控件通常很大,一般超过1m,下载速度很慢。

小程序方式

采用applet方式进行分页和准确打印是完美的,但缺点也很明显,如下所示

安装小程序需要巨大的成本。 需要下载十几米的文件。

小程序本身可能不大,但运行小程序所需的jre通常为10m。 用户为了进行打印需要非常大的耐心。

打印报告时,需要从服务器重新获取数据,效率很低。

applet方式一般以html方式提示数据,因此打印时applet必须从服务器中检索同一表单的数据,看起来像是打印了当前页的表单。 实际上,applet不是使用当前html页面的数据打印,而是将数据下载到服务器并打印到applet上。 这意味着要打印,它必须用于两次请求、一次html渲染和一次打印。

市面上的java类报告工具一般建议用小程序方式实现打印。

轻型activex插件dhtml javascript后台代码(

轻量activex插件设置打印参数,例如预定义的纸张类型、打印方向设置、打印边距设置、打印机指定和直接打印而不弹出打印对话框。

在dhtml javascript中编辑打印数据的格式表示,以实现格式定制。

后台代码可以动态获取打印数据,如java、dotnet等。

这种方案很理想,客户端只需要下载较小的打印插件,客户端不需要安装大于或等于c/s格式设计的源:

主要有一个叫ScriptX的主要控件

帕祖

jatoolsPrinter

lodop

国内主要是jatoolsPrinter和lodop,比较lodop最适合——技术支持,具有丰富的免费开放功能

使用lodop打印

打印工具的说明

Web打印控件Lodop

将JavaScript打印编程接口扩展为插件,以便web可以使用它来控制打印,支持超文本打印和自定义命令打印

打印设计过程页面检测打印控件的安装状态并提示

用户设定打印机、打印格式、字体等

检查表单数据,然后单击打印框进行预览

返回打印状态并更改文档的打印状态

p>

项目实现

基本流程打印控件引入及引导安装控件 JS 文件——LodopFuncs.js

对该文件的主函数 getLodop 模块化导出,修改相关文件里安装、调用和升级的程序代码为项目的弹框提示,去除升级检测。1export function getLodop(oOBJECT, oEMBED){}

控件在页面内以 object 元素形式被引用。设置元素的 width 和 height 等于 0 来隐藏控件。

采用 js 动态拼接字符串生成 html+css 的超文本并发送到打印插件进行打印1LODOP.ADD_PRINT_HTM('0mm', '0mm', '100%', '100%', strFormHtml)

设置定时器监听回调捕获打印状态1

2

3

4LODOP.On_Return_Remain = true

LODOP.On_Return = function(TaskID, Value){

// 根据TaskID和Value判断打印状态

}

模块化封装并设置打印回调模块化各个打印单据类型

项目里面有多个单据,打印的排版,指定打印机,内容等都有所不同,通过定义一个打印主函数,模块化封装各个单据及对应对应参数。我们只需在页面中调用函数并传入单据类型、打印数据及相关参数就可以实现具体单据的打印。1

2

3

4

5

6

7

8

9

10

11

12

13

14export printDemo1 = function(data){

printStyle = `样式控制`

printHtml = `填入数据的html模板`

const params = {

type: `Demo1`,

printStyle: printStyle,

printHtml: printHtml,

size: {

width: 800,

height: 600

}

}

return params

}

主函数流程控制

根据传入不同单据类型做处理并执行打印指令1

2

3

4

5

6

7

8

9

10

11import printDemo1 from './printModule/demo1'

export function print(type, data){

switch (type) {

case 'Demo1':

{

let params = printDemo1(data)

return doPrint(params)

}

case 'Demo2': ...

}

}

doPrint 函数执行打印返回一个 promise 对象,打印取消、成功或失败后的回调1

2

3

4

5

6

7

8

9

10function doPrint(params){

return new Promise(function (resolve, reject){

// 打印取消

reject('cancel')

// 打印成功

resolve('success')

// 打印失败

reject('error')

}

}

实际调用1

2

3

4

5

6

7

8

9

10

11print(data)

.then(res => {

console.info('打印成功')

})

.catch(err => {

if (err === 'cancel') {

console.warning('打印取消')

} else {

console.error('打印失败')

}

})

电子面单打印——gxdxj打印组件

打印工具说明gxdxj打印组件——模板设计器、打印客户端以及相应的接口和协议(gxdxj物流接入的电子面单都可以打除了顺丰)

模板设计可自定义设置电子面单模板并生成相关代码

打印机客户端用于 web 交互通讯打印相关电子面单

相关接口协议用于前端 web 调用并控制打印设置

打印流程

gxdxj打印 demo 文档

大致流程如下,相关代码均可写在一个 cainiaoChat.js 文件中并像 lodop 打印那样子模块化并做相关回调处理,打印的实现效果也和上文一致。相关的接口文档比较完善这里就大致讲解一下。

连接打印机

打印组件客户机soket接口为13528(https的话,端口是13529)

新建websoket连接打印组件并设置相关websoket监听事件

配置打印机,可配置项如下:

打印机名称

模板上下联logo

水平和垂直偏移量

页面有无空边

打印机纸张宽高

获取电子面单数据并构建打印请求

异步请求获取到要打印的电子面单数据=>按照格式要求构造request对象=>把request用websoket发送至gxdxj组件生成电子面单=>打印或预览设置

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。