WEB 打印的相关技术分析

从VLM到VLA概论 智驾视觉大模型 阅读详情

  做Web开发的人员一定都会面临一个共同的难题,那就是打印。的确,相对于Windows桌面应用程序来讲,Web应用程序的打印有种种限制,技术人员在项目开发过程中经常会遇到用户这样或那样的需求. 做过桌面应用开发的人都会非常熟悉水晶报表、Active Report之类的报表控件,它们不仅有简单灵活的设计界面,更具有非常强大的报表功能,能满足各种报表的打印需求。而Web应用则因为其特殊的呈现方式,只能寻求其他的解决方案。现在我们来分析一下目前已经成形的Web打印方案:

  现有的Web打印控制技术分成几种方案:

  一.自定义控件完成打印
  利用IE 自带的WebBrowser 控件实现打印
  利用第三方控件实现打印
  1、 自定义控件方式
  自定义控件方式就是利用VB 或VC 等工具生成COM 组件,用定义好的打印格式来分析打印源文件从而实现打印。只有将生成的组件下载并注册到客户机上,才能实现在客户端的
打印。
  难点主要是定义打印格式、如何来分析打印源文件。现有的比较好的方法是利用XML 技术来全面的解决问题,利用XML 可以非常容易地定义打印目标的文本、表格等内容的格式。
但对程序员的开发要求高,难度比较大。
  2、利用WebBrowser 实现Web打印
  WebBrowser是IE 内置的浏览器控件,无需用户下载。本文档所讨论的是有关IE6.0 版本 的WebBrowser 控件技术内容。与其相关的技术要求有:打印文档的生成、页面设置、打印操作的实现等几个环节。
  (一)、打印文档的生成
  1、客户端脚本方式
  客户端脚本分为VBScript、JavaScript、JScript 几种脚本语言。在IE 下开发应用使用的语法为JScript 的语法,由于它和JavaScript 几乎没有什么区别,所以也可以称其为JavaScript(下面简写为JS)。一般情况下,主要使用JS 来实现DOM 文档的分析,DOM 为微软提 出的一种Web文档模型,主要用来实现Web脚本编程。
  利用JS 可以分析源页面的内容,将欲打印的页面元素提取出来,实现打印。通过分析源文档的内容,可以生成打印目标文档。
  优点:客户端独立完成打印目标文档的生成,减轻服务器负荷;
  缺点:源文档的分析操作复杂,并且源文档中的打印内容要有约定;
  2、服务器端程序方式
  服务器端程序方式,主要是利用后台代码从数据库中读取打印源,生成打印目标文档。当的页面生成时,还应适当考虑使用CSS 来实现强制分页控制。
  优点:可以生成内容非常的丰富的打印目标文档,目标文档的内容的可控性强。由于打印 内容是从数据库中获取的,所以生成操作相对简单;
  缺点:服务器端负载比较大;
  (二)、页面设置
  页面设置主要是指设置打印文档的页边距、页眉、页脚、纸张等内容。页面设置将直接影响到打印文档版面的生成效果,所以它和打印文档的生成有着密切的关系。比如:表格的
行数、大小、位置、字体的大小等。
  现有的技术是利用IE6.0 内置的打印模板方式来控制页面设置,其可以对打印目标文档产生非常大的影响。打印模板可以控制页边距、页眉、页脚、奇偶页等内容,并可以将用户的设置取得,还可以将设置发送到服务器端。
  打印模板技术可以自定预览窗口和打印格式,最大限度地影响目标文档和打印效果。
  (三)、打印操作的实现
  此功能的实现主要是利用WebBrowser控件的函数接口来实现打印、打印预览(默认的)、
  页面设置(默认的)。
<object ID='WebBrowser1' WIDTH=0 HEIGHT=0
CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'>
//打印
WebBrowser1.ExecWB(6,1);
//打印设置
WebBrowser1.ExecWB(8,1);
//打印预览
WebBrowser1.ExecWB(7,1);
3、 一个实例项目采用的打印方案
服务器端程序方式、打印预览接口调用, 下面为例, 主要参考项目中的:
pageErrorPrint.aspx.vb 文件
主调用页
function PrintPage(iPageIndex,strQuery)
{
var strURL;
strURL = "PageErrorPrint.aspx?PageIndex=" + iPageIndex + "&QueryString=" +
strQuery;
winPrint=window.open(strURL,"","left=2000,top=2000,fullscreen=3");
}
打印页HTML 源中的预览控制
<SCRIPT language="javascript">
document.write("<object ID='WebBrowser' WIDTH=0 HEIGHT=0
CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>");
WebBrowser.ExecWB(7,1);
window.opener=null;
window.close();
</SCRIPT>
程序头
'首先声明表格容器
Protected WithEvents phContainer As System.Web.UI.WebControls.PlaceHolder
'每个表格中的记录数量
Private Const ItemPerTable As Integer = 20
关键的实现部分
'创建一个符合打印要求的表格
tabPagePrint = NewPrintTable()
'将表头添加到此表格中
Call AddTableTitle(tabPagePrint)
'初始化记录器
i = 0
iItemIndex = iStartPoint
For Each clsItem In clsAllData.ErrorCollection
If i > 0 And i Mod ItemPerTable = 0 Then
'添加表格控件到页面中
phContainer.Controls.Add(tabPagePrint)
'在页面中添加一个换行符
Call AddPageBreak()
'创建新一轮的表格
tabPagePrint = NewPrintTable()
Call AddTableTitle(tabPagePrint)
End If
'将记录添加到表格中
Call AddItemToTable(iItemIndex, tabPagePrint, clsItem)
iItemIndex = iItemIndex + 1
i = i + 1
Next
'添加表格控件到页面中
phContainer.Controls.Add(tabPagePrint)
支持函数
'功能:添加页的换行符
Private Sub AddPageBreak()
Dim ltBreak As LiteralControl
ltBreak = New LiteralControl("<p style='page-break-before:always'>")
phContainer.Controls.Add(ltBreak)
End Sub
  二、利用IE自身打印
  这种方式比较简单,也常用的打印方式,只需要将报表页面设计好,用户通过IE菜单中的打印功能完成打印。优点是简单,容易实现,缺点是不灵活,不能控制分页,不能控制好页眉和页脚。
  三、将报表导出成Word,Excel或PDF形式打印
  这种方式需要将页面导出成Office文档或pdf,最低的要求是客户端已经安装用以打开Word、Excel或Pdf文档的软件。这种方式可以通过水晶报表组件或其他一些第三方控件非常容易地实现。导出成Pdf形式后打印质量和效果都很好,导出成Word或Excel后用户可以自定义打印的内容和格式。
  总之,现有的打印方案各有所长,在开发过程中应根据用户的需求作选择,利用IE打印简单,容易实现,在用户需求简单或打印内容较少的情况下采用此方案比较适宜。利用自定义控件打印可以实现完全自定义,但需要较高的技术要求和开发周期。利用导出的方式则可以满足用户需要一点自定义或打印内容有多页的需求。

 

UG NX二次开发基础篇-外部模式与DLL内部模式(二 DLL内部模式) 通常情况下,我们希望我们的外挂,在UG启动的时候,就自动加载我们的外挂,并以菜单和工具条的方式,显示在UG上面。当然,这也是市面上所有外挂的操作,因为您不可能要求你的用户,以手工加载的方式,去调用你的外挂吧。在上一篇中,有粉丝留言说,启动 bat 文件,启动EXE外挂,会提示无法找到DLL的错误,这是因为UG的环境变量设置有问题,这里,我们把BAT文件作一个修改,直接改为实际目录。EXE外部模式,还有很多部分需要添加的,如参数的传递、输出消息的显示、UG操作的消息显示,等等。Dll执行结束后,会调用。 阅读详情

相关推荐

STM32 SAES硬件加密协处理器全模式工程实践指南

AES(高级加密标准)是嵌入式系统中最基础且关键的对称密码算法,其硬件加速实现直接影响安全、性能与功耗平衡。Secure AES Coprocessor(SAES)作为STMicroelectronics在STM32U5等高安全MCU中集成的专用密码协处理器,不仅支持标准ECB/CBC/CTR模式,更原生兼容GCM和CCM等认证加密模式,具备抗侧信道、密钥保护与DMA卸载能力。理解其寄存器状态机(CHMOD/MODE/CPHASE)、NPBLB数据对齐机制及GCM四阶段编程范式,是规避Tag校验失败、IV错

weixin_42311427的博客 76

实现WEB打印的几种方法

当前WEB应用开发非常流行,主要原因是WEB应用客户端的规则很简单,容易学习,容易维护,容易发布,降低了开发难度。但是,WEB应用的打印一直以来却是一个难题,特别是在应用中完成标签打印(如包裹面单、货运标签等)、票据打印(如零售小票)难度较大,其难度在于如何将需要打印的内容,精确套打到标签、票据中,精确控制分页,并实现高速连续打印。 对于WEB打印,当前有几种常见的方法,下面分别介绍,希望对大家有所帮助。 一、直接使用浏览器的打印功能 使用打印菜单或windows.print()的即可。这种方案的优势

az44yao的专栏 4370

[机器学习-回归实例] 李宏毅机器学习作业一:PM2.5 预测实例

[机器学习-回归实例] 李宏毅机器学习作业一:PM2.5 预测实例 简介   这是一个回归预测的实例,数据集来自李宏毅的《机器学习》课程的第一次作业,可以用来训练一个线性回归模型或者其他的回归模型,动手实践学习到的理论知识,在实践中去发现问题。这篇文章主要包括数据集的解释、数据的预处理过程及线性回归模型的代码实现这三个部分。由于这个数据集并不能直接使用,还需进行一些重构,为了对初学者更友好一些,我会提供重构完的可以读取后就直接使用的数据集,我也会提供 Matlab\rm MatlabMatlab 可直接使用

qq_27309515的博客 3574

Web打印--Lodop使用手册install_lodop.exe

http://www.hbsszx.com/lodop/PrintSample27.html Lodop是一款专业的WEB打印控件,其设计目标是简单易用、功能足够强大,开创WEB打印开发的新局面。 Lodop设计者对WEB下的打印开发任务进行了分类汇总,高度抽象,设计出仅用几个功能函数,就可实现复杂的打印任务,尽量减少使用者的知识累赘。控件发布包有3个系统文件组成,全部功能用几个控件参数和2组

LYBWWP 3万+

Java后端中的链路追踪:使用OpenTelemetry实现全链路监控

在现代的微服务架构中,链路追踪是监控和优化系统性能的关键技术。通过链路追踪,我们可以跟踪请求在系统中的流转,识别性能瓶颈,定位问题根源。本文将介绍如何在Java后端应用中使用OpenTelemetry实现全链路监控,包括具体的实现步骤和代码示例。通过集成OpenTelemetry,您可以实现全面的链路追踪,帮助您识别瓶颈和潜在问题,从而提升系统的可靠性和用户体验。OpenTelemetry是一个开源项目,旨在提供统一的工具集来收集、处理和导出应用程序的遥测数据,包括跟踪、度量和日志。

聚娃科技开发者博客 1727

手把手教你学基带SOC芯片(4.2)--基带soc芯片的存储器设计

基带 SoC 中的存储器设计需要综合考虑功耗、成本和性能等因素。SRAM 适合高速缓存,DRAM 适合主内存,Flash 存储器适合非易失性存储。通过优化存储单元设计、阵列布局和外围电路,可以提高存储器的性能和效率。

MHD0815的博客 350

WebAssembly编译之(3)-WASM编译实战之C/C++导出asm.js及wasm库

c/c++导出asm.js/wasm库,实现javascirpt对c/c++函数、类、对象的调用

youlinhuanyan的博客 4135

黑猫带你学eMMC协议第1篇:全网最全emmc协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)

黑猫带你学eMMC协议第7篇:全网最全emmc写保护详解(write protect) 黑猫带你学eMMC协议第8篇:emmc可靠写详解(Write Reliability) 黑猫带你学eMMC协议第9篇:emmc的分区配置(partitioning) 黑猫带你学eMMC协议第10篇:eMMC命令队列详解(CMDQ) 黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim…) 黑猫带你学eMMC协议第12篇:

黑猫奥利奥的博客 2万+

Web使用热敏打印小票(IE环境)

概述 在html页下使用Epson P60II 热敏纸下打印小票,使用的打印方案为调用window.print()。 代码实现 1、定义窗体,设置宽度和高度 2、使用ActiveXObject,创建 Scripting.FileSystemObject​​​​​​​ function print_onclick() { var objfs = new ActiveXObject("Scripting.FileSystemObject"); var objprinter=objfs.C..

寒冰屋的专栏 1200

GEE:基于自定义的年度时序数据集进行LandTrendr变化检测

本文介绍了使用年度时序数据进行LandTrendr变化检测的方法,包括核心函数调用、参数设置和结果可视化。通过筛选参数(年份、变化幅度和持续时间)对结果进行过滤,输出变化年份、变化幅度和持续时间。代码提供了完整的处理流程,包括数据输入、LandTrendr算法运行、结果筛选与可视化,并支持结果导出。适用于基于Google Earth Engine平台的地表变化检测分析。

养乐多的博客 752

7、RNA 二级结构预测:包含接吻发夹基序的新策略

本文提出三种用于预测RNA二级结构中接吻发夹基序的新策略,结合规范化规则与非歧义动态规划,分别在时间与空间复杂度之间进行权衡。策略A以O(n⁴)时间和O(n²)空间实现高效预测;策略B通过存储次优结果扩大搜索空间,空间复杂度升至O(n³);策略C全面探索组合可能,时间复杂度为O(n⁵),但保持O(n²)空间。实验表明不同策略适用于不同复杂度的序列,为RNA结构预测提供了灵活且可扩展的解决方案。

j7k8l的博客 132

WEB打印的相关技术分析

WEB打印的相关技术分析 现有的Web打印控制技术分成几种方案  自定义控件完成打印  利用IE自带的WebBrowser控件实现打印  利用第三方控件实现打印以下主要谈前两个方面的内容一、 自定义控件方式自定义控件方式就是利用VB或VC等工具生成COM组件,用定义好的打印格式来分析打印源文件从而实现打印。只有将生成的组件下载并注册到客户机上,才能实现在客户端的打印。难点主要是定义打印格式、如何来

张锋的博客 4541

vue2/3 - [超详细] 实现企业微信扫码登录完整流程及代码,vue项目接入企业微信扫码登录功能教程,支持新跳页显示二维码或div容器里内嵌登录二维码(详细代码注释,一键复制开箱即用)

vue企业微信扫码登录,vue网页网站企业微信扫码登录教程,vue如何实现企业微信扫码登录功能,vue详细企业微信扫码登录功能实现,vue2实现企业微信扫码登录,前端vue企业微信扫码登录教程,vue pc电脑端企业微信扫码登录详细教程,vue项目中怎么做企业微信扫码注册登录,vue实现网站接入企业微信扫码登录,vue2做企业微信扫码登录的优质文章教程,vue网站对接企业微信扫码登录,vue企业微信扫码登录如何新开一页全屏显示登录二维码,vue企业微信登录二维码 内嵌在div容器里/跳页显示登录二维码,vu

✅ 精选推荐文章 5702

不等式证明:约束条件下三次方和的最小值求解与均值不等式应用

不等式证明是数学优化和工程计算中的基础技术,其核心原理在于通过数学工具建立变量间的数量关系。均值不等式作为关键工具,能够有效处理约束条件下的极值问题,在资源分配、机器学习正则化等场景中具有重要技术价值。当面对固定和条件下的三次方和优化时,通过AM-GM不等式可将复杂的三次方问题转化为一次方积的求解,这种转化思想在工程实践中尤为实用。本文以a+b=2时证明a³+b³≥2为例,深入解析了不等式方向控制、取等条件验证等实操要点,展现了数学工具在解决实际优化问题时的应用逻辑。

weixin_33834628的博客 321

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

《WEB打印的相关技术分析》

为了回应各位高手对我的支持,特别是:emu(ston)老兄对我的支持,特做此贴为回应!希望各为同仁指教,我在用.net开发aspx程序,所以是用VB.net的语法说明的一些问题,各位可以一见,内容如下: 如果各位觉得有一定的价值,请帮我转贴一下! 《WEB打印的相关技术分析》 现有的Web打印控制技术分成几种方案  自定义控件完成打印  利用IE自带的WebBrowser控件实现打...

weixin_30730151的博客 81

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

《WEB 打印的相关技术分析》

做Web开发的人员一定都会面临一个共同的难题,那就是打印。的确,相对于Windows桌面应用程序来讲,Web应用程序的打印有种种限制,技术人员在项目开发过程中经常会遇到用户这样或那样的需求. 做过桌面应用开发的人都会非常熟悉水晶报表、Active Report之类的报表控件,它们不仅有简单灵活的设计界面,更具有非常强大的报表功能,能满足各种报表的打印需求。而Web应用则因为其特殊的呈现方式,只能寻

闲居散人C#学习专区 1145

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: SQL语句的基本语法
下一篇: 实现语音聊天
aspnet2002web
博客等级 码龄21年 482粉丝 310原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值