Strato WebPrinter工作原理
背景
随着软件开发技术逐渐由C/S架构转向B/S架构,打印逐渐成为Web开发人员需要面临的问题。日益强大的CSS样式表技术可以很方便的实现复杂的布局与显示,但由于Web技术对程序的安全沙箱控制,打印的最后一步:输出到打印机却是一个难题。
我们调研了大量Web软件,发现针对Web打印解决方案,主要有如下几种技术实现方式:
1.直接调用Javascript打印
通过调用浏览器window对象内置的print方法弹出打印窗口,用户点击确认打印。
这种方式是最简单的打印方法,其最大的问题是需要很大程度人工介入,用户手工需要设定页眉页脚、页边距,以及点击确认打印按钮。这极大地降低了应用的友好度,也无法适应一些高频操作的业务场景。
2.浏览器控件打印
另一部分开发者采用开发浏览器控件的方式,通过控件连接浏览器的打印SDK并提供Javascript桥接口供网页调用。
早期的代表是在IE浏览器中,JS通过ActiveX技术调用浏览器打印。这种随意调用本地控件的方式被证明为不安全的,同时随着火狐、谷歌等浏览器的兴起,兼容性问题也逐渐凸显。
由于浏览器控件开发技术门槛高,该类产品往往由专业的控件开发商研发并提供有偿使用。
控件很好地解决了交互性的问题。但浏览器控件随操作系统版本、位数、浏览器种类及版本不同,需要开发和维护不同的控件版本,同时主流浏览器的升级速度也十分敏捷,控件开发商往往无法跟上浏览器版本的脚步。此外大部分浏览器往往要求使用C语言开发,若缺乏一个好的内存管理模型,控件经常会因为内存问题而崩溃甚至导致浏览器崩溃。
3.本地代理
还有一种方式是在本地安装代理程序,由代理提供Http服务,网页通过跨域的请求技术提交打印任务并接收反馈。
这种方式的好处是脱离了浏览器的约束,避免因浏览器更新带来的版本延迟同步问题。
唯一的问题在于,这种方式需要提示用户下载并安装代理程序。
设计思路
Strato WebPrinter的核心理念,就是为开发人员提供高度可管理的、极度稳定的、高度自动化的打印解决方案。
经过多方技术调研与分析,我们决定采用第三种方案,即本地代理方式,作为应用场景的核心架构。并采用Java作为代理程序的开发语言,期望通过Java虚拟机技术的跨平台特性,及Java强大的内存管理能力,提供极度稳定的后台服务。
运行场景
Strato WebPritnter运行场景
说明:
页面通过JS API未检测到代理程序,提示用户安装;
用户从本地或CDN下载安装程序,并安装;
安装完成后启动代理程序,网页自动检测到代理程序,隐藏提示并切换到正常内容;
用户交互或自动执行JS API发送打印任务;
JS API注册回调函数或监听事件并修改任务状态;
反复运行直至完成打印。
文章来源:转自
http://webprint.stratoio.com/doc/theory
分享到:
相关推荐
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
内容概要在本文档中详细介绍了在MATLAB环境中运用遗传算法(GA)对门控循环单元(GRU)网络模型进行优化,并实现多输入单一输出的数据回归预测的技术过程,涵盖数据生成、模型建立与配置、遗传算法优化以及最终的训练和效果测试。 适合人群本总结适用于从事深度学习特别是涉及序列数据研究的专业人士,如机器学习工程师、科研工作者或希望深化自己神经网络建模技能的学习者。 使用场景及目标包括但不限于:解决实际应用中遇到的时间序列预测问题、提升对于RNN家族中高级组件的理解水平以及掌握复杂任务下模型调参的具体手法,尤其着重于增强回归问题的精度表现。 附加说明随文提供的范例代码全面细致,使得初学者能顺利跟随教程建立起自身项目,在实践中探索遗传搜索法的优势所在。
本项目为基于Vue框架开发的毕业生离校管理系统设计源码,包含322个文件,涵盖147个Vue组件、95个JavaScript脚本、46个SVG图形、9个SCSS样式表、3个Handlebars模板、2个YAML配置、2个Markdown文件、2个JSON数据、2个PNG图片和2个CSS样式文件。系统采用Vue、JavaScript、CSS和HTML等多种编程语言和技术构建,旨在实现毕业生的离校管理功能。
本项目是一款以Python为主开发语言的实训内容设计源码,共包含33个文件,涵盖21个Python源代码文件、5个编译后文件、3个图片文件、3个文本文件、1个JSON文件。这些文件共同构成了一个结构完整的实训项目,旨在为学生提供实际操作的学习平台。
在大规模可用训练语料库中,数据选择对于大型语言模型(LLM)的预训练至关重要。研究人员正在探索使用数据影响力来衡量数据实例的重要性,即高影响力分数表明将该实例纳入训练集可能会提高模型性能。然而,这种方法存在几个限制:(1) 计算所有可用数据的影响力耗时;(2) 选择的数据实例不够多样化,可能会阻碍预训练模型有效泛化到各种下游任务。本文介绍了Quad方法,这是一种同时考虑质量和多样性的数据选择方法,通过使用数据影响力实现最先进的预训练结果。
该项目是一款基于Python和HTML开发的智慧养老系统计算机视觉代码设计源码,包含95个文件,其中包括64个Python源代码文件、9个XML配置文件、5个Git忽略文件、4个HTML页面文件以及其他类型的文件,如hdf5、iml、md等。该系统专注于利用计算机视觉技术提升养老服务,适用于智慧养老领域的应用开发。
输送粉末涂层炉_三维3D设计图纸.zip
self python script
本项目是一款基于HTML语言的婚礼电子请帖H5邀请函设计源码,包含355个文件,涵盖109个JavaScript文件、87个Markdown文件、62个JSON文件、17个JPG图片文件、10个PNG图片文件、5个TypeScript文件、4个CSS样式文件,以及若干配置和忽略文件。该设计适用于制作结婚请柬、婚礼电子请帖和婚礼H5邀请函,为用户提供了丰富的视觉和交互体验。
贴合机_三维3D设计图纸.zip
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
数据手册-SN75176B-datasheet.zip
毕设答辩 参考的ppt
该项目是一款基于Python语言的WMS财务报表对比脚本设计源码,包含21个文件,包括13个Python脚本文件、5个XML配置文件、2个Excel文件和1个Idea项目文件。该脚本旨在帮助用户高效地进行财务报表的对比分析。
【测试环境】 vs2019,netframework4.7.2,onnxruntime1.16.3 视频演示:https://www.bilibili.com/video/BV1ki4y1i7up/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee 更多信息参考博文:https://blog.csdn.net/FL1623863129/article/details/135632930
内容概要:本文探讨了利用小型语言模型进行跨领域(故事和食谱)内容生成所面临的挑战及解决方案。实验结果显示,对于独立数据集(如儿童简短故事或烹饪菜谱),专用的小型模型可以产生高质量的文字,而定制化的分词器则进一步提升了输出的质量。但是,在尝试将一个模型训练到两个不同的领域的过程中遇到了显著障碍——无论采用Low-Rank Adaptation还是标准调整都无法防止模型出现灾难性的遗忘问题。为解决这个问题,作者最终引入了一种基于冻结部分网络层并增加新的参数的方法来进行知识扩增的创新技术,从而成功让单个小尺度模型既能产出连贯的故事又能提供精确有序的做法。 适用人群:自然语言处理研究人员与从业者,尤其是对小模型高效多领域应用有兴趣的人群。 使用场景及目标:用于研究和构建能在不同但又彼此相对独立的业务场景(如创意写作平台和饮食建议软件)下生成合适的内容的小型模型。 本文通过对两种不同类型的任务上知识保持的研究,提供了有效对抗模型忘记之前学过的知识的办法。同时也证明即使是算力有限的情况也有可行的路径使NLP模型具备多个领域能力,这对推动语言生成技术走向更加经济高效的未来方向至关重要。
数据手册-AMS1117-datasheet.zip
数据手册-DS18B20-datasheet.zip
该项目为基于Python核心的Frappe框架设计源码,综合运用Python、JavaScript、HTML、CSS、Shell等多种编程语言,共计2005个文件,其中包含728个Python文件、467个JavaScript文件、221个JSON文件、174个HTML文件、98个Markdown文件、77个CSS文件、74个CSV文件、38个PNG图片文件、34个LESS文件、16个SVG文件。此项目结构清晰,适用于构建复杂的应用程序和系统。
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据