首页 > 其他分享 >浏览器web在线打印如何实现

浏览器web在线打印如何实现

时间:2024-07-17 14:31:42浏览次数:10  
标签:web 浏览器 方案 打印 组件 PDF 模板

在B/S应用系统开发中常常遇到表单打印需求,尤其是OA、ERP类的企业运营管理系统,打印的需求很常见,但WEB应用的打印一直以来是一个难题,特别是在应用中完成标签打印(如包裹面单、货运标签等)、票据打印(如零售小票)难度较大,其难度在于如何将需要打印的内容,精确套打到标签、票据中,精确控制分页,并实现高速连续打印。

对于WEB打印的技术实现方案以及项目实践效果进行分别介绍,希望对大家有所帮助。

1、web打印技术方案

Web打印技术的实现方案有多种,以下是其中四种常见的方案:

一、使用浏览器的打印功能菜单或windows.print()打印。这是最简单的方案,不需要对浏览器进行任何扩充。但是,这种方案存在很多问题,包括:

(1)不能准确对齐边边距及打印文字,常常会发现打印的样式十分混乱,因为打印机采用的是 mm 单位,而不是我们页面常用的 px,同时有些样式在打印时也不会生效;

(2)会有页脚页眉干扰;

(3)不能精确分页。浏览器一般是根据用户设置的页面大小,web页面的内容多少,来自行决定分页位置,程序员很难控制。

(4)不能解决连续打印。比如,不是仅打印一张票据,而是连续一次打印若干个票据。

二、使用@media print媒体查询控制打印样式。因为打印机采用的是 mm 单位,而不是我们页面常用的 px,所以一般我们都需要为打印样式重新进行设计,这种方法是直接使用浏览器打印功能的增强版本。该方案通过在html文档中,嵌入打印相关的css样式,在CSS中,我们可以使用@media print规则来设置不同媒体类型下的样式,来实现对html文档输出打印的控制,比如设置纸张大小,纸张纵横方向,打印边距,分页等。使用该方案的优点是,成本小,不需要下载任何插件,而且跨平台性非常好。

基于此类技术实现的开源组件有:hiprint、vue-plugin-hiprint、vue-print-nb、vue3-print-nb、printThis等。

这种方式实现打印也有短板:

(1)对页面开发要求比较细节和繁琐,需要在控制打印的地方使用好@media print的css样式,在不同类型的浏览器下可能会打印的效果不一样。

(2)跟使用pdf和office的打印功能相比,打印精准度上还是有一定差距,不过对于大部分业务来说也够用。

三. 使用浏览器插件实现打印。在浏览器中安装ActiveX控件实现打印。该方案在IE时代非常流行。这种方案就是下载一个控件,票据的数据不再以html方式呈现,而是呈现在ActiveX中。这种方案的优点是打印的精确度高,分页的可控性好。但缺点也是很明显的,就是ActiveX控件的只能在IE浏览器下使用,在当前Firefox, Chrome, Edge成为主流的情况下,其适用范围大大减少。另外,ActiveX控件需要在每个客户端安装维护,经常出现客户端莫名的问题,跟操作系统和浏览器版本都有关系,运维成本也比较高。

四. 转化成PDF文档实现打印。由于PDF是一种版式文件格式,一旦生成以后在任何地方阅读打印效果都是一样的。基于转化PDF实现打印有前端转化和后端转化两种方案。

(1)前端转化PDF实现打印。jsPDF 是一个开源组件,基于 HTML5 的客户端解决方案,使用浏览器纯前端技术用于生成各种用途的 PDF 文档,这样就可以把图片或网页转化为PDF文件,然后打印PDF文件,进而实现打印需求。

(2)后端转化PDF实现打印。通过后端的文档转化组件,把页面内容转化为PDF文档,下载到前端进行打印。专业的打印产品往往会配有打印设计器,实现精准的打印排版设计,然后转化成PDF进行输出打印。开源的组件有wkhtmltoPdf、itext等。这种方案的缺点是开发打印设计器的成本较高,整体技术复杂都较大。

2、项目实践web打印方案

云程低代码平台采用了第二种打印方案,并集成整合了vue-plugin-hiprint打印组件,实现了可视化设计打印模板,支持各种常见类型的打印需求。

vue-plugin-hiprint提供了Web打印设计器功能,它是一种在线打印模板设计工具,具有直观的用户界面,使非专业开发人员也能轻松创建高质量的打印模板,广泛用于各种应用场景,如发票打印、标签打印、报告生成等。以下是Web打印设计器的一些关键特点:

(1)模板创建:Web打印设计器通常提供一系列预设的模板,用户可以直接使用或基于这些模板进行修改。用户还可以从头开始创建新的打印模板。

(2)组件和元素:Web打印设计器允许用户添加各种组件和元素,如文本框、图像、表格、条形码等。这些组件和元素可以方便地调整大小、位置和样式。

(3)数据绑定:Web打印设计器支持数据绑定,这意味着用户可以将数据源(如数据库、API等)与模板中的特定组件关联。这样,当数据发生变化时,打印输出也会相应更新。

(4)预览和测试:Web打印设计器通常提供预览功能,允许用户在正式打印之前查看设计的效果。这有助于确保设计满足要求,并进行必要的调整。

打印模板管理:

0-打印模板管理

打印模板在线设计:

1-打印设计器

发票类定位精准打印:

2-发票定位打印

在线体验:http://www.yunchengxc.com

标签:web,浏览器,方案,打印,组件,PDF,模板
From: https://www.cnblogs.com/hibpm/p/18307276

相关文章

  • 使用Java和JHipster快速构建现代化的Web应用
    使用Java和JHipster快速构建现代化的Web应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!引言在当今快节奏的软件开发环境中,快速构建现代化的Web应用是开发团队面临的重要挑战之一。本文将介绍如何利用Java和JHipster工具来快速搭建一个现代化的Web应......
  • uni-app实现web-view和App之间的互相通信
    1.web-view向App传递消息官网对于uni-app使用web-view的介绍如下:web-view 注意事项提到postMessage方法,这就是web-view向App传递消息的方法,使用如下: 注意H5本身不支持uni-app里面的方法,所以在项目中引入支持调用uni-app方法的库 web-view页面使用:uni.postMessage({......
  • ant-design-blazor web page页面开发-页面结构
    page页面文件的代码详细解析:1.命名空间和布局设置:@namespaceAntDesign.Pro.Template.Pages.User:定义了当前页面的命名空间。@layoutUserLayout:指定了页面使用的布局模板。2.页面路由:@page"/user/login":定义了页面的路由地址。3.页面结构:页面容器和面包屑导航HomeForm......
  • 使用forEach循环异步方法,导致使用深拷贝时,得不到最新数据,控制台会打印出最新的数据
    在使用forEach循环遍历一个数组,如果循环时有异步方法,会导致最终深拷贝得不到最新数据,但是控制台会打印最新的数据constarr=[{name:"Jone",age:18},{name:"Tom",age:15},{name:"Liu",age:48}];functionfunTimeout(param){......
  • c++ Program to print pyramid pattern (打印金字塔图案的程序)
    编写程序打印由星星组成的金字塔图案 例子: 输入:n=6输出:    *    **    ***    ****    *****    ******     *****    ****    ***    **     *......
  • 基于web的人力资源管理系统 毕业设计 springboot+Vue+mysql
    介绍在当今企业管理中,人力资源的有效管理对于组织的发展至关重要。为了提高人力资源管理的效率和准确性,我们开发了这个基于Web的人力资源管理系统。该系统旨在为企业提供一个全面、便捷、高效的人力资源管理平台,满足企业对人力资源规划、招聘、培训、绩效管理等方面的需求。......
  • web安全前期的信息收集工作
    首先你需要获得目标网站的真实IP地址,可以通过IP反查域名(web查询)、域名查询IP(web查询)等查出其IP,方便进行后续操作。有个小技巧:CDN流量收费高,所以很多站长可能只会对主站或者流量大的子站点做了CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过查询子域......
  • 掌握Laravel的策略与授权门面:构建安全的Web应用
    掌握Laravel的策略与授权门面:构建安全的Web应用在构建Web应用时,确保适当的授权检查是至关重要的。Laravel框架提供了策略(Policies)和授权门面(PolicyFacades)作为实现强大、灵活的授权系统的工具。本文将深入探讨Laravel中策略和授权门面的使用方法,并提供详细的代码示例,帮助......
  • dotnet netcore web api 部署 IIS windows 部署 windows server
    .NetCore部署IIS一、服务器环境配置1.1安装ASP.NETCore模块/托管捆绑包ASP.NETCore不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,为了能部署在IIS,必须先安装AspNetCoreModuleV2。安装方式一:安装ASP.NETCore运行时(推荐)下载地址:htt......
  • 浏览器工作过程及相关名词
    网页获取在计算机网络中,双方通过知道彼此的IP地址,即可建立通信通信协议包括TCP与UDP两种,其中:TCP建立连接过程如下(三次挥手):sequenceDiagramparticipantAparticipantBA->>B:SYNB->>A:SYN,ACKA->>B:ACKTCP断开连接过程如下(四次握手):sequenceDiagrampart......