实现WEB打印的几种方法

当前WEB应用开发非常流行,主要原因是WEB应用客户端的规则很简单,容易学习,容易维护,容易发布,降低了开发难度。但是,WEB应用的打印一直以来却是一个难题,特别是在应用中完成标签打印(如包裹面单、货运标签等)、票据打印(如零售小票)难度较大,其难度在于如何将需要打印的内容,精确套打到标签、票据中,精确控制分页,并实现高速连续打印。

对于WEB打印,当前有几种常见的方法,下面分别介绍,希望对大家有所帮助。

一、直接使用浏览器的打印功能

使用打印菜单或windows.print()的即可。这种方案的优势是不需要对浏览器作任何扩充,是最简单的办法,但问题也最多,如:

  1. 不能精确分页。浏览器一般是根据用户设置的页面大小,web页面的内容多少,来自行决定分页位置,程序员很难控制。
  2. 会有页脚页眉干扰。
  3. 不能准确对齐边边距及打印文字。
  4. 不能解决连续打印。比如,不是仅打印一张票据,而是连续一次打印若干个票据。
  5. 打印时一般会出现弹窗提示,影响用户体验。

二、使用print css

这种方法是直接使用浏览器打印功能的增强版本。该方案通过在html文档中,嵌入打印相关的css样式,来实现对html文档输出打印的控制,比如设置纸张大小,纸张纵横方向,打印边距,分页等。使用该方案的优点是,成本小,不需要下载任何插件,而且跨平台性非常好。但是目前的问题是:

  1. print css 厂商的支持度较差。
  2. 没有解决打印时会出现弹窗提示的问题,连续打印是效率较差。用户体验较差
  3. 打印小幅面的标签时不太适合
  4. 打印一维码,二维码不太方便
  5. 必须使用windows的驱动程序,对于斑马等公司提供的采用ZPL协议的专业标签打印机,支持不太好。

三、使用PDF文件

用这种方式,就是从服务器端下载一个pdf文件流,在浏览器中用adobe插件打开,然后用adobe的打印菜单进行打印。该方案能实现精确套打,但需要下载adobe插件。同时,该方案一般更适合报表的打印,打印标签/票据并不十分合适。   

四、采用ActiveX

该方案在IE时代非常流行。这种方案就是下载一个控件,票据的数据不再以html方式呈现,而是呈现在ActiveX中。这种方案的优点是打印的精确度高,分页的可控性好。但缺点也是很明显的,就是ActiveX控件的只能在IE浏览器下使用,在当前Firefox, Chrome, Edge成为主流的情况下,其适用范围大大减少。

五、打印精灵采用的技术方案

打印精灵设计目标支持网页打印、移动设备打印、嵌入式设备打印,满足多种场景下的打印需求,为软件开发者、系统集成商降低开发难度加快产品研发速度提供一个工具,设计打印精灵时,我们提出了如下目标:

  1. 提供简单的JS API,通过API直接控制打印机。
  2. 支持IE9+、Firefox、Chrome、Safari等主流浏览器,支持手机浏览器
  3. 专注标签打印,打印小票、商标、吊牌、物流面单,支持一维码,二维码打印。
  4. 超高速打印支持专业标签打印机,无须Windows打印驱动,直接使用业界标准的ZPL/CPCL打印指令,确保全速打印
  5. 提供WYSWYG所见即所得的模板编辑器,分离模板设计和模板打印,方便标签设计。
  6. 同时支持WEB打印移动设备打印嵌入式设备打印

根据上述目标,我们提出了打印精灵的技术实现方案,方案以打印模板为核心,分别实现WEB打印,移动设备打印,嵌入式设备打印的驱动。本文重点介绍,WEB驱动的实现技术,移动设备/嵌入式设备的处理方案,我们将在其他文章里陆续介绍。

前面介绍的常规WEB打印技术,各有各的问题,无法实现上述目标。比如:要实现跨浏览器支持就不能使用ActiveX技术; 同时支持WEB打印、移动设备打印、嵌入式设备打印就不能采用print css技术等等。通过反复研究、比较、权衡,我们设计了本地打印代理的模式。

本地打印代理本质上是一个在本地启动miniWeb服务器,通过客户浏览器与miniWeb服务器的通讯,完成打印。由于miniWeb服务器在独立的进程中运行,可以开发各种复杂的功能,而不会影响浏览器,是一个非常稳定的、可靠、可兼容各种浏览器的方案。该方案的难点是设计合理的通讯协议,解决跨域访问等技术问题。

实现上,我们采用了跨平台的golang作为开发语言,开发了一个可以开机自启动的miniWebSvr程序,可以在windwos, linux等系统上使用。golang的性能较高,最终程序的体积较小,运行速度快。需要的同学可以到这里下载

为了简化打印操作,我们对底层协议进行了封装,提供了便于操作的API的。详见JS API使用指南

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FastReport.NET Web打印是一款基于FastReport.NET报表引擎的网页打印解决方案。它提供了一个简单而强大的工具,允许开发人员直接在Web应用程序中生成和打印报表。 FastReport.NET Web打印有以下几个主要特点: 1. 强大的报表设计工具:FastReport.NET提供了一个直观、易于使用的报表设计器,开发人员可以通过拖放方式添加数据和控件,自定义报表样式和布局,轻松设计出符合需求的报表。 2. 多种数据源支持:FastReport.NET Web打印支持多种数据源,包括数据库、XML文件、JSON数据等,可以方便地从不同来源获取数据进行报表生成。 3. 支持多种输出格式:FastReport.NET Web打印支持多种输出格式,包括PDF、Excel、Word、图片等,用户可以将报表输出为多种常见的文件格式,方便保存和分享。 4. 可定制的报表模板:开发人员可以根据需求创建自定义的报表模板,包括添加公司Logo、设置页眉页脚、调整字体颜色、样式等,实现报表的个性化定制。 5. 跨平台支持:FastReport.NET Web打印可以在各种操作系统和浏览器上运行,包括Windows、Linux、Mac等,兼容主流的浏览器,如Chrome、Firefox、IE等。 6. 安全性保障:FastReport.NET Web打印提供了安全的报表导出和打印功能,可以通过权限控制、加密处理等手段来保障报表数据的安全性。 总之,FastReport.NET Web打印是一种高效、灵活、易用的网页打印解决方案,可以帮助开发人员快速生成和打印各种类型的报表,提升工作效率,满足不同用户需求。 ### 回答2: FastReport.Net是一款优秀的报表生成工具,它不仅可以在桌面应用程序中生成报表,还可以在web应用程序中进行报表打印。 FastReport.Net Web打印功能允许我们在web浏览器中直接打印报表,而无需将报表导出为PDF或其他格式再进行打印。这样可以大大简化打印流程,节省时间和工作量。 要使用FastReport.Net进行Web打印,我们需要在web应用程序中引入FastReport.Net的相关库文件,并创建报表模板。报表模板的设计可以通过FastReport.Net提供的可视化设计器完成,也可以通过代码进行动态生成。 在Web应用程序中,我们可以通过浏览器中的打印按钮或者自定义的打印按钮来触发打印操作。当用户点击打印按钮时,FastReport.Net会将报表模板加载,并根据数据源中的数据生成报表内容。 FastReport.Net提供了丰富的打印选项,包括打印份数、纸张类型、页眉页脚、页码等。我们可以根据需要自定义这些选项,以满足打印要求。 同时,FastReport.Net还支持导出报表为PDF、Excel、Word等格式,以满足不同的使用需求。导出的报表可以方便地保存、打印或分享给其他人。 总之,FastReport.Net的Web打印功能使得在web应用程序中生成和打印报表变得简单高效。它的强大功能和简便操作为我们提供了一个便捷而强大的报表打印解决方案。 ### 回答3: FastReport.Net是一个用于创建报表的.NET框架。它具有强大的报表设计工具和丰富的功能,可以帮助开发人员快速而轻松地创建各种报表。 FastReport.Net支持Web打印的功能,可以将报表轻松地集成到Web应用程序中。用户只需要通过Web浏览器访问应用程序,就可以查看和打印报表。这为用户提供了方便和灵活的报表访问方式。 使用FastReport.Net进行Web打印非常简单。开发人员只需设计好报表并将其与Web应用程序集成,然后将报表保存为指定的格式,如PDF或HTML。当用户在Web应用程序中请求打印报表时,应用程序会动态地生成报表文件,并将其提供给用户进行打印。 通过FastReport.Net的Web打印功能,用户可以方便地打印报表,无需额外安装任何软件或工具。报表可以在任何设备上打印,包括计算机、平板电脑和手机等。 此外,FastReport.Net还提供了自定义打印设置和打印预览功能,用户可以根据自己的需求设置打印样式,并在打印之前预览报表的内容。这为用户提供了更加个性化和精确的报表打印体验。 总而言之,FastReport.Net的Web打印功能为用户提供了方便、灵活和个性化的报表打印方式。无论是开发者还是最终用户,都能够从中受益并轻松地实现报表的访问和打印
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值