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

一、打印模板解析

/*
///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”。

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

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

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

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

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

三、阿雪技术观

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

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

扫码,可学习更多

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值