王新阳

wangxinyang

用虚拟打印机检测打印效果

安装虚拟打印机:DoroPDF Writer、Bullzip PDF Printer

打印时选择虚拟打印,会自动生成pdf文件或图片文件,图片效果即为最终打印效果,不需要用真实纸张打印,快捷方便。

修改DoroPDF的配置文件Doro.ini,可以设置输出文件类型、覆盖提醒、文档转换类型、静默转换等。

Doro PDF Writer ‌是一款免费的虚拟打印机软件,主要用于将各种文档转换为PDF格式。该软件具有体积小、操作简便的特点,支持多种文件格式的转换,包括Word文档、Excel表格、PowerPoint演示文档、图片、邮件和网页等‌。

功能特点
‌体积小巧‌:Doro PDF Writer的安装包大小仅为8MB左右,不会占用过多系统资源‌。
‌操作简单‌:用户只需像操作真实打印机一样进行设置和打印,即可将各种文件转换为PDF格式‌。
支持多种文件格式‌:无论是Word文档、Excel表格、PowerPoint演示文档,还是图片、邮件、网页等,都可以轻松转换为PDF‌、JPG、PNG。
‌加密功能‌:用户可以在打印时设置加密选项,确保PDF文件的安全性‌。
使用方法
‌安装软件‌:下载并安装Doro PDF Writer后,会在“控制面板”中的“打印机和传真”选项中看到新安装的虚拟打印机‌。
‌设置默认打印机‌:右键点击Doro PDF Writer,选择“设置为默认打印机”‌。
‌打印文件‌:打开需要转换的文件,选择“打印”功能,然后在打印机选项中选择Doro PDF Writer进行打印‌。
‌设置加密‌:在打印时,可以在“加密”界面设置密码,确保PDF文件的安全性‌。

云主机遭遇挖矿病毒处理方法

https://blog.csdn.net/qq_61872115/article/details/136987258

https://blog.csdn.net/qq_35573061/article/details/138495615

优秀开源项目

微信支付SDK
https://easywechat.com/
https://github.com/w7corp/easywechat

中国农历(阴历)与阳历(公历)转换与查询工具
https://github.com/overtrue/chinese-calendar/tree/master

更准确的 PHP 汉字转拼音解决方案
https://overtrue.me/php-chinese-to-pinyin/
https://overtrue.me/pinyin/
https://github.com/overtrue/pinyin

我的LODOP打印控件代码备份

<script src="/static/lodop/LodopFuncs.js?v=reg"></script>
<script>
//定义打印控件
var LODOP = null;
//已打印标识
var printFlag = [0,0]; //打印次数、页数
window.onload=function(){LODOP=getLodop();};

function createPage(data){
/**
 * LODOP基础知识
 * 计量单位关系如下(其中px单位与像素类似,但不是一个概念)
 * 1in = 2.54cm = 25.4mm = 72pt = 96px
 * 1mm = 2.83465pt = 3.77953px
 * 1pt = 0.352777mm = 1.333333px
 * 1px = 0.264583mm = 0.75pt
 *
 * 字号默认单位为pt,不设置默认为9pt
 * 长度单位默认为px(SET_PRINT_PAGESIZE中的PageWidth和PageHeight除外,默认为0.1mm)
 *
 * 设置纸张大小(initOrient为1-3时会锁定打印方向,为0时由用户控制)
 * SET_PRINT_PAGESIZE(intOrient, PageWidth,PageHeight,strPageName)
 * 不调用此函数则由用户在打印设置中自主设置
 */
	
	//LODOP.PRINT_INIT('证书打印');
	LODOP.PRINT_INITA(0,0,'330mm','240mm','证书打印'); //top,left,width,height,printName,整体打印有偏差时,只需要调整top和left值即可
	LODOP.SET_PRINT_MODE('CUSTOM_TASK_NAME', data.name); //打印任务名
	LODOP.SET_PRINT_MODE('POS_BASEON_PAPER',true); //true以纸张边缘为基点;false可打区域边缘为基点
	LODOP.SET_PRINT_MODE('AUTO_CLOSE_PREWINDOW',1); //打印后自动关闭预览窗口
	//LODOP.SET_PRINT_PAGESIZE(0, '240mm','330mm', 'CreateCustomPage'); // 第一个参数:1纵向打印2横向打印3宽度固定高度自适应0用户控制
	LODOP.SET_PRINT_PAGESIZE(2,0,0,''); //后三个值无效时只用来设置打印方向
	
	LODOP.SET_PRINT_STYLE('FontSize',13.5);  //全局字号,单位pt
	LODOP.SET_PRINT_STYLE('FontName', '新宋体'); //全局字体(宋体、新宋体设置加粗无效)
	LODOP.SET_PRINT_STYLE('Bold',1); //全局加粗
	LODOP.SET_SHOW_MODE('BKIMG_PRINT',false); //是否打印背景图
	//LODOP.SET_PRINT_STYLE('Alignment', 2); //全局水平居中
	
	//LODOP.ADD_PRINT_TEXT(top, left, width, height, textContent); //默认单位px
	LODOP.ADD_PRINT_TEXT(157,912,234,30, data.name);
	//LODOP.SET_PRINT_STYLEA(0, 'FontSize', 13.5); //为前面刚添加的项目设置字号、字体、颜色等打印式样
	LODOP.ADD_PRINT_TEXT(231,912,234,30, data.gender);
	LODOP.ADD_PRINT_TEXT(306,912,234,30, data.nationality);
	LODOP.ADD_PRINT_TEXT(381,912,234,30, data.ethnic_group);
	LODOP.ADD_PRINT_TEXT(455,946,234,30, data.birth);
	LODOP.ADD_PRINT_TEXT(338,289,260,30, data.major_name);
	LODOP.ADD_PRINT_TEXT(418,254,260,30, data.grade);
	LODOP.ADD_PRINT_TEXT(498,289,260,30, data.certdate);
	LODOP.ADD_PRINT_TEXT(578,289,260,30, data.certno);
	LODOP.ADD_PRINT_TEXT(659,275,260,30, data.grade_begin_end);

	if(data.photo){
		LODOP.ADD_PRINT_IMAGE(155,659,'36mm','49mm','<img border="0" src="'+data.photo+'?rnd='+Math.random()+'">');
		LODOP.SET_PRINT_STYLEA(0,'Stretch',2);//默认不设置或0为截取模式;1按打印区域尺寸缩放(变形);2按原图比例(不变形)缩放模式
	}
}

//更新打印日志
function update_print_log(row){
	row.print=parseInt(row.print)+1;
	table.updateRow('myTable', {index:row.LAY_INDEX, data:row}, true);
	$.ajax({
		type: 'POST',
		data: {act:'update_print_log', id:row.id},
		success: function(res){
			if(res.code)return layer.alert(res.msg);
		}
	});
}

function batch_print(){
	var data=table.checkStatus('myTable').dataCache;
	if(!data.length)return layer.msg('请选择要打印的记录', {time:2e3});
	
	$.each(data, function(index,row){
		createPage(row);
		LODOP.PRINT();
		update_print_log(row)
	});
}

//选择打印机
function print_printer(){
	//return layer.alert('请在打印预览界面中点击菜单栏的"设置"选择打印机或打印设置。');
/*
	var printer_list=[];
	for(var i=0; i<LODOP.GET_PRINTER_COUNT(); ++i){
		printer_list.push(LODOP.GET_PRINTER_NAME(i));
	}
	console.log(printer_list);
	return;
*/
}
//打印维护
function print_edit(){
	var row=create_data();
	if(row===null)return layer.alert('无数据');
	createPage(row);
	LODOP.ADD_PRINT_SETUP_BKIMG('<img border="0" src="/static/images/cert.jpg">');
	LODOP.SET_SHOW_MODE('SHOW_SCALEBAR',1); //显示标尺
	LODOP.SET_SHOW_MODE("BKIMG_LEFT",0);
	LODOP.SET_SHOW_MODE("BKIMG_TOP",0);
	LODOP.SET_SHOW_MODE('HIDE_PBUTTIN_SETUP',true);
	LODOP.SET_SHOW_MODE('HIDE_PBUTTIN_PREVIEW',true);
	LODOP.PRINT_SETUP();
}
//打印预览
function print_view(){
	var row=create_data();
	if(row===null)return layer.alert('无数据');
	createPage(row);
	LODOP.ADD_PRINT_SETUP_BKIMG('<img border="0" src="/static/images/cert.jpg">');
	LODOP.SET_SHOW_MODE('BKIMG_IN_PREVIEW',1); //打印预览显示背景图
	LODOP.SET_SHOW_MODE('SHOW_SCALEBAR',1); //显示标尺
	LODOP.SET_SHOW_MODE('HIDE_PAPER_BOARD',1); //隐藏打印预览背景进纸版的图案
	LODOP.SET_SHOW_MODE("BKIMG_LEFT",0);
	LODOP.SET_SHOW_MODE("BKIMG_TOP",0);
	LODOP.SET_SHOW_MODE('HIDE_PBUTTIN_SETUP',true);
	LODOP.SET_SHOW_MODE('HIDE_PBUTTIN_PREVIEW',true);
	LODOP.PREVIEW();
}
function print_design(){
	LODOP.PRINT_INITA(0,0, '330mm','240mm', '打印设计');
	LODOP.PRINT_DESIGN();
}
//版本检测
function print_version(){
	try{
		if(LODOP.VERSION) {
			let str=LODOP.CVERSION ? 'C-Lodop版本:'+LODOP.CVERSION+'<br>Lodop版本:'+LODOP.VERSION : '本机已安装Lodop控件!<br>版本号:'+LODOP.VERSION;
			layer.alert(str);
		};
	}catch(e){}
}
//打印预览、打印维护时展示的数据
function create_data(){
	var data=table.getData('myTable');
	if(!data.length)return null;
	var checkData=table.checkStatus('myTable').data;
	return checkData.length ? checkData[0] : data[0];
}
</script>

网站文件名中带“#”的文件怎么访问或下载?

http://abc.com/read#me.txt

因为文件名中带 #,这种地址直接访问无法打开 read#me.txt文件。解决办法是把 # 换成 %23

http://abc.com/read%23me.txt

所以通过在文件名中加 # 来防止文件被下载是不可靠的。

lodop打印控件-关于谷歌Chrome浏览器94版跨域问题的解决方案

谷歌浏览器再次迈出激进安全步骤,Win10+Chrome94版阻断http页面访问localhost服务, 这一举动广泛影响了Web模式的设备管理系统,例如路由服务、打印服务等,其中也包括C-Lodop软件。 安全是个美好的托词,真正让谷歌贸然行动的动机是大力推广https协议,而https背后是TLS证书, TLS证书背后是浏览器厂商的年费分成,利益巨大...闲话少说,解决方案如下:

有四种方法,选其一就行:

一、网站改用HTTPS方式(彻底方案)

二、安装最新的C-Lodop6.564及后版本,并更新LodopFuncs.js文件;

三、手动修改客户浏览器安全设置,在Chrome地址栏输入:chrome://flags/#block-insecure-private-network-requests

看到底色泛黄的“Block insecure...”项的 Default 值,改选成 Disabled然后窗口下方会出现蓝底的Relaunch按钮,点它重启浏览器。

四、客户端改用低版本Chrome(94版前)浏览器,简单办法是安装360急速版(Chrome内核)

注:微软的浏览器Edge94版因为采用了Chrome内核,故以上解决方案也适用。

Ueditor配置

1、宽度自适应:设置 initialFrameWidth: null

var ue = UE.getEditor('editor',{
  initialFrameWidth:null, //宽度随浏览器自适应
  wordCount: false, //关闭字数统计
  elementPathEnabled : false, //隐藏元素路径
  autoHeightEnabled: false, //是否自动长高
  autoFloatEnabled: false, //是否保持toolbar的位置不动
  allowDivTransToP: false, //阻止div标签自动转换为p标签
});

2、高度自适应:设置 '#edui1' 和 '#edui1_iframeholder' 的高度
css中设置:

#edui1 {
  height: 100%;
}

js中设置(编辑器显示时):

$('#edui1_iframeholder').css('height','calc(100% - 10px)');

3、扩展

ue.setDisabled();//不可编辑


企业需要什么样的云平台?

来源:https://www.zhihu.com/people/topoflove

这个话题本身满干燥的,我尽量不用术语,用日常的语言来讲一下吧。

 总的来说,使用云服务,是所有现代化企业肯定要面临的一个管理决策。决策有两个大方向,一种是不上云,一种是上云。 


 企业的业务发展到一定程度,肯定是需要信息系统来支撑的,企业如果是一所房子,信息系统就是家里的家用电器。当然,没有家用电器你也能活,就好像没有洗衣机你也能洗衣服,但是洗衣机无疑会让洗衣服这个事情的效率大大提高。

 支撑信息系统工作的,是服务器、网络这些基础架构;而支撑洗衣机工作的,就是电力。用最简化的例子来说,不上云,相当于自己家里买个发电机发电;上云,相当于找发电厂买点。这两种方式没有对错,只有合适不合适。

 上云或者不上云,本质上是不同业务发展阶段的不同需求。

 


上云和上云也不一样,大家经常听到什么私有云、公有云、或者混合云这些词,我来通俗的解释一下,不是很精确,只为了理解。

 

介绍一家创业公司的工程师迪丽冷巴(我们就叫他小迪吧),下面是小迪的故事。

 

最开始,创业公司企业信息系统要求不强,比如全公司没几个人,每天有个打卡系统记录下上班时间就行了。小迪就去买了台服务器,让打卡系统跑在那个上面。

 

后来公司业务发展了,人也多了,信息统统多了起来,什么请假啊、采购啊、报销啊等等系统,于是每次搭一个系统,小迪就去买台服务器,用的也挺好。

 

然后小迪的领导感觉到情况不太对,打卡系统每天也就上下班的时候用的繁忙一点,大部分时间都闲着,用一整台服务器太浪费了。而报销系统,平常还好,到了月末所有人一起填报销申请表的时候卡得跑不动,一台服务器不够用,要两台,但是买两台呢平常又闲着。

 

这种加一个系统就买一个服务器的方法,太浪费资源了,领导让小迪出个主意。

 

小迪灵机一动,决定搞个IT资源池。资源池由很多的服务器组成,所有的信息系统都可以跑在这个资源池里面,那些需求高的信息系统多分配些资源,需求少的就少分配点。月末的时候给报销系统多分配点资源,月初的时候给财务打款系统多分配点资源,这样资源得到了最大化的利用。

 

小迪想出来的这个东西,其实就是一种企业私有云,私有云的资源由企业自己购买和建设,对比传统IT分散资源的优点是:

资源集中
资源共享
资源高效利用

领导很开心,给小迪升职,成了大迪,岁月静好。


后来公司业务发展越来越好,企业有了自己的电商平台,跑在自己的私有云上,电商平台每个月卖五万单的货,领导们很开心。

转眼双11还有一个月就要到了,公司上下士气高昂,电商节这种重大利好,一天销量顶平时半年,一定要抓住机会。但是大迪这时候犯了难了,这平常一个月5万单,跑在公司私有云上轻轻松松;但是双11一天20万单,是平常单日销量的100多倍,就算把整个私有云的资源都分配给电商系统,那也不够用啊。

这时候买服务器、买交换机来扩大资源池,当然是可行的,但是时间不等人啊。企业采购服务器什么的,供应商很多也是接到订单才开始排产,没现货的,买来动辄一两个月,还要把机器都给装上,软件都给配置好,别说双11了,圣诞节都要过去了。更不要说,公司的数据中心只有那么大,买了新设备,也放不下呀。

但是大迪毕竟是久经考验的大迪,他又想到了一个主意——我们的电商平台,就不要在企业的资源池上跑了,我们去租外面的资源池吧。这个资源池,就是公有云。

于是大迪联系了国内的大型公有云服务提供商,一下子买了双11当天原本电商平台100倍那么多的资源,大迪还留了个心眼,万一当天销量比预期的好,资源可以自动扩容到200倍。然后接下来的一段时间,工程师们和大迪一起,哼哧哼哧的把电商系统给迁移到了公有云上。

双11当天,果然销量火爆,但是好在有100倍资源的支撑,系统没有崩,领导很开心。双11过后,销量回归正常,大迪又把资源从100倍调回了正常水平,电商系统也就一直留在了公有云上,静待明年双11时候再一次扩容。

后来,公有云服务商,根据大迪的实际资源使用收费,省去了大迪把私有云扩建100倍的时间、精力和金钱。

公有云相对于私有云的优点是

敏捷快速,准备时间短,弹性大
按需付费,实报实销,不浪费
不需要考虑自建设施的维护成本和人员支出
省空间

 领导很开心,给大迪升职,成了胖迪,岁月静好。


这时候,公司业务发展多元化了,在全世界各地开了工厂和分公司,对信息系统的要求更高了。胖迪也尝到了公有云的甜头,恨不得所有信息系统都给架到公有云上面。但是这时候也碰到了一些问题。

企业已经非常庞大了,但是一些自用的信息系统,因为开发时间较早,用的人多,支持的业务非常复杂,所以没法迁移到公有云上,还是只能跑在原本的私有云资源池上。

这时候,已经身经百战的胖迪决定,这些系统虽然留在私有云上面,但是和公有云上的系统实现信息流的打通,顺便能够成为互相备份。

这,就是混合云架构

混合云架构的优点是:

享受了公有云的便利
保证了不便迁移的私有云系统的正常运行
网络互通,统一管理

 讲完了小迪成为胖迪的故事,可以看到,其实虽然技术复杂度不同,但是选择是否上云,上什么样的云,取决于企业业务的需求和发展阶段

 而选择上云的,上不同的云,要做的技术工作也不一样。比如要私有云,那么要自己采购对应的企业IT硬件设备,更多的是买产品;上公有云,要找公有云服务提供商,更多的是买服务;上混合云,那么两者都要做一点,产品和服务都要买。

 目前国内在云服务领域能兼顾产品和服务的,基本就是华为这样有做云服务的硬件大厂了,用流行的话来说是云服务全栈。产品方面,华为的硬件研发和工业化水平还是让人服气的,现在的云平台产品在高性能计算、大数据、软件开发和SAP HANA应用上面都有了实施实例。而在服务方面,华为云也布局了很久,容器服务和微产品服务框架上都有不少领先。华为企业自己在全球那么多国家和地区允许企业自己的信息系统,也是一个比较好的自证——敢不敢把自己的核心业务跑在自己的云服务上,永远是考量云服务商的第一标准。 


 目前拥抱公有云的客户还是互联网企业为主,传统中小型企业和大企业体量都不大。互联网用户的诉求很简单,便宜、敏捷和好用。

 大企业现在拥抱公有云不多,而且有钱、有人、有空间来搞自有的私有云。但是企业运营早晚会被成本和灵活性限制。当自有数据中心建设的风火水电因素放入考量,运维自己的大型私有云管生又管养的高投入模式,肯定会逐渐降低信息系统建设的效率。

 目前传统企业选择自建资源池,根本原因还是核心诉求和互联网用户不同,传统大企业的核心诉求是可靠、开放与合规。但是随着公有云领域的产品越来越可靠、好用与正规,成本因为规模效应被进一步压缩,未来会有更多的传统企业业务上云。

 而传统的中小企业其实可以尽早选择公有云的方式来替代传统自建IT的模式,这样可以实现省时、省力、省人、省空间,让企业将更多资源专注于业务拓展,同时传统IT的模式从经营上讲也会增加企业的固定资产,硬件使用到一定期间还要面临维保、更新换代的等问题。而公有云有很好的弹性,可以应对突然到来的高峰应用诉求。

 Gartner的研究报告也是支持这个趋势的:


 前面讲完了不同的云服务的类型,下面说一下上了云之后的大致路径吧:

 第一条是业务云化,也就是把自己的业务系统比如ERP、MES、CRM等迁移到云上,用更快的速度实现统一管理、随处接入、全球覆盖和异地灾备。这是企业上云的基础

 第二条是数据能力的云化,也就是把数据采集、计算、管理和应用这些所有场景的能力全部在云端执行。大数据的降维打击目前在零售、安防等领域开始逐渐明晰,数据能力的云化肯定是相关企业要考虑的。

 第三条是利用云服务快速应对业务创新,也就是说云服务的那些敏捷、接入、管理的优势,最后还是要回到服务业务创新上来。云服务,就应该像电力一样,需要的时候一开开关就来,想要更多的电立刻可以调来,并且非常的可靠。


上不上云?
上什么样的云?
上了云之后怎么利用云?

 这三个问题是现在经营现代企业逃不过的问题,在合适的时间选择合适的云服务,是大趋所向,能问出这些个问题,只是迈出了第一步,之后一定要步步为营,每一步都考虑好方向。

ftp连接FileZilla服务器时遇到无法协商数据连接的解决办法

1、服务器FileZilla Server设置》被动模式设置》使用自定义端口范围:50000-51000

2、在防火墙启用相应端口(阿里云ECS在阿里云控制台启用)。

现在就可以FTP客户端中使用PASV被动模式连接服务器了。

OA多级审批流程表设计方案以及开发思路

转自:https://blog.csdn.net/cslx5zx5/article/details/107566070

另可参考:在web报表开发软件中如何进行分发逐级上报
https://jingyan.baidu.com/article/a24b33cd71a4d619fe002baa.html
https://help.fanruan.com/finereport/doc-view-588.html

2025-07-07 星期一 农历六月十三