网页打印模板解析源码--SAAS本地化及未来之窗行业应用跨平台架构

news2024/12/25 1:10:01

一、打印模板解析

/*
///cyberwin_offline_database_printtemp.js
 未来之窗打印模板解析技术 2024-09
*/
class CyberWin_Database_printtemp_KV {
  constructor() {
    this.data = {};
	this.line_count = 0 ;
  }

  解析(数据) {
   // this.data[key] = value;
   this.line_count = 0 ;
   this.data = {};
   const parser = new DOMParser();
     
       const xmlDoc = parser.parseFromString(数据, 'application/xml');
	    console.log("未来之窗打印");
	  // console.log(xmlDoc);

	   const targetElement = xmlDoc.getElementsByTagName('Report')[0];
		if (targetElement) {
		 // console.log(targetElement.textContent);
		}

	   const rootElement = xmlDoc.getElementsByTagName('Report')[0];
	   const childElements = rootElement.getElementsByTagName('ReportPage')[0];
	   console.log("打印2=ReportPage");
	    console.log(childElements);
			const childElements_页面 = childElements.childNodes;
			for (let i = 0; i < childElements_页面.length; i++) {
              console.log("打印3=ReportPage="+childElements_页面[i].nodeType+",Node.ELEMENT_NODE="+Node.ELEMENT_NODE);
			   console.log(childElements_页面[i]);
			  // console.log(childElements_页面[i].tagName + ': ' + childElements_页面[i].textContent);
			 // if (childElements_页面[i].nodeType === Node.ELEMENT_NODE) {
			 // if (childElements_页面[i].nodeType ===3) {
              if (childElements_页面[i] != "#text") {
				console.log("打印4="+childElements_页面[i].tagName );

				 if("DataBand" == childElements_页面[i].tagName || "PageHeaderBand"  == childElements_页面[i].tagName){
					 const childElements_打印 = childElements_页面[i].childNodes;
					 for (let j = 0; j < childElements_打印.length; j++) {

						 console.log("打印明细");
						  console.log("打印4 nodeType="+childElements_打印[j].nodeType);
						  if (childElements_打印[j] == "#text") {
							  console.log("打印5,明细不满足");
							  continue;
						  }
						  if (childElements_打印[j].nodeType ==3) {
							  console.log("删除空行");
							  continue;
						  }

						 console.log(childElements_打印[j]);
						 var Font = childElements_打印[j].getAttribute('Font');
						 var CanGrow = childElements_打印[j].getAttribute('CanGrow');
						 
						  var content = childElements_打印[j].getAttribute('Text');

						  //Left
						  var x =childElements_打印[j].getAttribute('Left');
						  var y =childElements_打印[j].getAttribute('Top');
                            console.log(content);
                        //Font="宋体, 9pt"
						  var 字体分离array = 	 Font.split(', ');
						  var 字体_大小 =字体分离array[1].replace('pt','');

						  if(x){
						  }else{
							  x=0;
						  }
						  if(y){
						  }else{
							  y=0;
						  }
						  if(CanGrow){
							  CanGrow ="Y";
						  }else{
							  CanGrow = "N";
						  }
						 
						 console.log(childElements_打印[j].tagName + ',Top: ' + Font +" left="+x);

						 var 打印条目 ={type:'text',x:x,y:y,content:content,CanGrow:CanGrow,Font:Font,Fontsize:字体_大小};


						  this.data[this.line_count] = 打印条目;
						  this.line_count=this.line_count+1;
					 }
				 }
			  }
			}

	 return {count:this.line_count,data:this.data};
  }

  

}

 二、代码解释

在这神秘的修仙代码之境,有一神奇之“类”,名曰“CyberWin_Database_printtemp_KV”。

此“类”初建之时,犹如铸就一座空灵之库,其内部数据为空,且行数计数为零。

而后,有一神奇之法“解析”,能洞悉传入之神秘“数据”。

先是将一切归空重置,再以仙法“DOMParser”解析此“数据”,化为神秘之“xmlDoc”。

继而探寻其中特定元素,遍历诸多节点。

于层层节点之中,筛选甄别,获取各种属性与内容。

如同在仙阵之中,寻觅珍贵的灵能符文与奇妙法诀。

最后,将所得之“打印条目”精心收藏,行数计数递增,并以所得成果回传。

此过程犹如在仙法秘境中探索寻宝,步步精妙,玄机暗藏。 

三、阿雪技术观

拥抱开源与共享,见证科技进步奇迹,畅享人类幸福时光!

让我们积极投身于技术共享的浪潮中,不仅仅是作为受益者,更要成为贡献者。无论是分享自己的代码、撰写技术博客,还是参与开源项目的维护和改进,每一个小小的举动都可能成为推动技术进步的巨大力量

扫码,可学习更多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2107850.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生日(仅粉丝可见,生日是9月6日,提前一天发的)

祝我自己生日快乐&#xff01; 感谢大家的陪伴与支持&#xff0c;以后我会努力做作品的&#xff01; &#xff08;累谁也不能累自己&#xff0c;所以我打算放3天假&#xff0c;反正延迟开学&#xff0c;先玩了来再去上学&#xff01;&#xff09;

数据库超时排查

背景&#xff1a; 项目是用的springboot&#xff0c;连接池用的是hikaricp&#xff0c;且数据库连接做了LB配置&#xff0c;之前就是经常会有数据库出现问题&#xff0c;专家给到的解决方案。 数据连接io超时报错&#xff0c;排查了当时数据库各项指标都无显示异常&#xff0c;…

基于SA-BP模拟退火算法优化BP神经网络实现数据预测Python实现

在数据分析和机器学习领域&#xff0c;时间序列预测和多输入单输出系统的预测是重要且复杂的问题。传统的BP&#xff08;反向传播&#xff09;神经网络虽然具有强大的非线性函数逼近能力&#xff0c;但在处理这些问题时容易陷入局部极小值、训练速度慢以及过拟合等问题。为了克…

【读书笔记-《30天自制操作系统》-15】Day16

本篇内容继续多任务的讲解。上一篇中实现了两个任务之间的自动切换&#xff0c;但还不够通用&#xff0c;这里将其优化为多个任务之间的切换。接着引入了任务休眠的概念与休眠的程序实现。最后介绍了任务的优先级&#xff0c;一种用切换时间的长短来衡量&#xff0c;一种用Task…

【Qt】文件对话框QFileDialog

文件对话框QFileDialog ⽂件对话框⽤于应⽤程序中需要打开⼀个外部⽂件或需要将当前内容存储到指定的外部⽂件。 通过QFileDialog 可以选择一个文件&#xff0c;能够获取到这个文件的路径&#xff0c;打开文件/保存文件。 常⽤⽅法介绍&#xff1a; 1、打开⽂件&#xff08;⼀…

【高中生讲机器学习】17. 讲人话的主成分分析,它来了!(上篇)

创建时间&#xff1a;2024-08-13 首发时间&#xff1a;2024-09-05 最后编辑时间&#xff1a;2024-09-05 作者&#xff1a;Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏&#xff0c;很高兴遇见你~ 我是 Geeker_LStar&#xff0c;一名准高一学生&#xff0c;热爱…

Redis 集群高可用详解及配置

关型数据库 关系型数据库&#xff1a; 是建立在关系模型基础上的数据库&#xff0c;其借助于集合代数等数学概念和方法来处理数据库中的数据 主流的 MySQL、Oracle、MS SQL Server 和 DB2 都属于这类传统数据库 关型数据库的优缺点 特点&#xff1a; 1、数据关系模型基于关系…

Redis使用——Redis的redis.conf配置注释详解(三)

Redis使用——Redis的redis.conf配置注释详解&#xff08;三&#xff09; 背景 日常我们开发时&#xff0c;我们会遇到各种各样的奇奇怪怪的问题&#xff08;踩坑o(╯□╰)o&#xff09;&#xff0c;这个常见问题系列就是我日常遇到的一些问题的记录文章系列&#xff0c;这里整…

鸿蒙轻内核M核源码分析系列四 中断Hwi

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 持续更新中…… 在鸿蒙轻内核源码分析系列前几篇文章中&#xff0c;剖析了重要的数据结构。本文&#xff0c;我们讲述一下中断&#xff0c;会给读者介绍中…

Ubuntu固定USB串口名(包括1拖N的USB串口)

在运行Ubuntu系统的开发板上,如果使用可插拔的USB串口,有时候程序正在运行时,如果突然连接传感器的USB串口设备被插拔了一下,这时,会发现系统中的USB串口名发生了改变。例如,插拔之前是/dev/ttyUSB0,插拔之后变成了/dev/ttyUSB3。发生这种情况的时候,有时候会导致程序无…

Windows I/O系统

硬件存储体系 寄存器 处理器内部定义的存储体&#xff0c;它们除了存储功能&#xff0c;往往还兼有其他的能力&#xff0c;比如参与运算&#xff0c;地址解析&#xff0c;指示处理器的状态&#xff0c;等等。寄存器是由处理器内部专门的触发器电路实现的&#xff0c;处理器往…

jupyter里怎么设置代理下载模型

使用如下方式: %env http_proxyhttp://10.110.146.100:7890 %env https_proxyhttp://10.110.146.100:7890

【SLAM】GNSS的定义,信号原理以及RTK在多传感器融合中的使用方法

【SLAM】GNSS的定义&#xff0c;信号原理以及在多传感器融合中的使用方法 1. GNSS的定义2. GNSS信号原理3. RTK - Real Time Kinematic4。 如何使用RTK做融合和优化 1. GNSS的定义 GPS&#xff08;Global Positioning System&#xff09;和GNSS&#xff08;Global Navigation …

Ubuntu22.04安装colmap

首先上这里查看自己电脑GPU的CMAKE_CUDA_ARCHITECTURES 终端输入以下内容安装预先的前置依赖 sudo apt-get install \git cmake ninja-build build-essential \libboost-program-options-dev libboost-filesystem-dev \libboost-graph-dev libboost-system-dev libboost-tes…

【操作系统存储篇】操作系统的设备管理

目录 一、广义的IO设备 分类 按使用特性分类 按信息交换的单位分类 按设备的共享属性分类 按传输速率分类 二、IO设备的缓冲区 三、SPOOLing技术 一、广义的IO设备 输入设备&#xff1a;对CPU而言&#xff0c;凡是对CPU进行数据输入的。 输出设备&#xff1a;对CPU而…

深度解析:基于离线开发的数据仓库转型落地案例

在当今这个数据驱动的时代&#xff0c;各行各业都正经历着前所未有的变革。伴随技术的飞速发展&#xff0c;数据仓库作为企业数据管理与分析的核心&#xff0c;如何更好地发挥作用&#xff0c;助力企业保持业务的敏捷性与成本效益&#xff0c;成为大家关心的焦点问题。本文将通…

vue使用html2Canvas导出图片 input文字向上偏移

vue使用html2Canvas导出图片 input文字向上偏移 图中 用的是element的输入框 行高 32px,经常测试 你使用原生的input 还是会出现偏移。 解决方法&#xff1a;修改css样式 1.怎么实现导出 网上随便找很多 2.在第一步 获取你要导出的元素id 克隆后 修改他的样式或者 你直接在你需…

web渗透:SSRF漏洞

SSRF漏洞的原理 SSRF&#xff08;Server-Side Request Forgery&#xff0c;服务器端请求伪造&#xff09;是一种安全漏洞&#xff0c;它允许攻击者构造请求&#xff0c;由服务端发起&#xff0c;从而访问服务端无法直接访问的内部或外部资源。这种漏洞通常发生在应用程序允许用…

v$session_longops监控 PDB clone 进度

How to Monitor PDB Clone / Move On Create Pluggable Database with COPY Clause Statement Execution (Doc ID 2866302.1)​编辑To Bottom In this Document Goal Solution References APPLIES TO: Oracle Database - Enterprise Edition - Version 19.14.1.0.0 and later…

leetcode:908. 最小差值 I(python3解法)

难度&#xff1a;简单 给你一个整数数组 nums&#xff0c;和一个整数 k 。 在一个操作中&#xff0c;您可以选择 0 < i < nums.length 的任何索引 i 。将 nums[i] 改为 nums[i] x &#xff0c;其中 x 是一个范围为 [-k, k] 的整数。对于每个索引 i &#xff0c;最多 只能…