多格式文档中批量注入矢量二维码的研究与实现

2022-09-09 02:16任雁
电子技术与软件工程 2022年11期
关键词:批量条形码文档

任雁

(长治学院计算机系 山西省长治市 046011)

在企、事业各单位的实际生产经营活动中,经常需要向相关产品的说明文档、质检文档、环保评估文档等一些繁杂的文档资料中注入单个产品的唯一身份标识图片信息(如条形码、二维码等),这些工作如果仅仅依靠Excel、Word 等常用办公类软件来做,会非常繁琐,耗费大量人力资源,工作效率低下,出错率也很高,对企事业单位的日常有序经营产生较大影响。本文设想,如果将Excel 文档中的批量产品标识信息一次性导入到研究软件中,再批量生成对应的二维码图片信息,然后将批量处理好的信息结合相应模板统一注入到对应格式的文档文件中,这样,通过设计软件的统一处理,就可以很好的实现企业数字化管理,提高公司整体的工作效率。

1 矢量二维码

随着信息技术的高速发展,二维码在实际生活中也随处可见,各式各样的产品和应用场景使用了二维码图片信息。生活中,我们只需要拿出手机对着二维码简单一扫,便可以获取其中的个性化信息并与之发生关联,二维码的使用可以极大地提高生活的便捷性,在个人的生活场景中如此,那么在企事业单位的实际生产经营活动中,更是如此。二维码的广泛使用不仅可以大大提升企业的数字化程度,同时也可以有效的加快企业的生产经营活动。二维码分为普通二维码和矢量二维码,在个人生活中,很多时候,普通二维码就可以满足使用要求,而且二维码图片信息也是被单独使用的,但在企业实际生产经营活动中,很多时候是需要将产品二维码图片信息注入到指定文档中被统一使用,而且二维码图片在文档中会比较大,这种情况,对二维码的大小、清晰度都会有严格要求,普通二维码就无法满足应用要求了。矢量二维码无论二维码图片怎样放大或者缩小,都不会影响二维码的清晰度,能最大程度保证文件内容的真实准确,所以被企业广泛应用。

2 模板文档

不同的企业、不同的应用场景会有各种不同的目标格式文档,例如产品的信息展示文档、产品的质检文档、产品的环保评估文档等等,本文简单制作了多个不同产品的环保信息模板文档,并保存为.docx格式文件,方便软件的写入操作,下面截取了一个模板文件中的部分图片,如图1所示。

图1:模板文档

模板文件根据产品类别的不同,内容也不尽相同,多份模板需统一存放在系统的指定位置,并将位置信息写入数据库相应表中,以方便软件的批量处理,本文采用了Access数据库模型,并创建了表名为moban 的子表,用来存储模板文件的相关信息。

模板文档在后期会通过软件平台与产品特定标识信息匹配,从而生成特定目标文档信息,因其包含有大量重复类信息,我们可以将同一类型的文档信息制造成一个对应的模板文件,再由软件匹配并批量注入产品标识信息,从而生成目标文档,节省大量的人力资源,提高实际工作效率。

3 功能具体实现

以下是使用C#编程语言具体的实现细节:

3.1 创建窗口

首先,需要将产品标识信息整理成Excel文档(文字信息)导入软件中,制作相应的数据导入窗口,对应的创建窗口语句 是:PiLiangLuruForm m_Form = new PiLiangLuruForm();具体样式如图2所示。

图2:导入窗口

3.2 导入数据

创建导入Excel 数据函数loadExceldata(IWorkbook workbook);导入成功后,数据会展示在左侧的TabPages 中,在简单配置完参数后,点击“导入信息”按钮,程序后台将会把Excel 标识信息连同参数信息一并写入数据库maindat表中,并把最后结果展示在右侧dataGridView1 中,至此就完成了生成目标格式文件的相关准备工作,如图3所示。

图3:数据导入

3.3 模板匹配

接下来,需匹配对应模板文件,获取页面参数设置,通过后台数据库表moban 中的参数字段值,匹配到对应模板文件的系统存放位置。

3.4 图片生成

找到模板文件的具体存放位置信息,获取相关参数并生成标识矢量二维码图片:

(1)创建生成二维码函数GetQRCodeByZXingNet(string strMessage,int width,int height);

(2)在函数中构造BarcodeWriter 实例BarcodeWriter barcodeWriter = new BarcodeWriter();

(3)初始化实例barcodeWriter 相关属性值barcodeWriter.Format= BarcodeFormat.QR_CODE;barcodeWriter.Options.Hints.Add(EncodeHintType.CHARACTER_SET,"UTF-8");barcodeWriter.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.H);barcodeWriter.Options.Height=height;barcodeWriter.Options.Width = width;barcodeWriter.Options.Margin = 0;

(4)构造BitMatrix 实例BitMatrix matrix = barcodeWriter.Encode(strMessage);

(5)生成二维码图片result = barcodeWriter.Write(matrix);

此外,本文还将标识文档信息同步生成了条形码图片,注入到目标文档中,创建条形码生成函数GetCodeBar(string content,bool bartxt,int width,int height);生成并返回条形码结果return new BarcodeWriter{Options =encodingOptions,Format = BarcodeFormat.CODE_128}.Write(content)。

3.5 批量导入

生成了图片二维码信息后,接下来需要注入到模板文档指定位置,本示例用到了C#中的Spire 相关类来对Word文档进行写入操作,首先创建Document 实例Spire.Doc.Document document = new Spire.Doc.Document();加载模板文件document.LoadFromFile(fileName,FileFormat.Docx); 替换文档中二维码图片标识this.replaceImg(document,replacestr,this.GetQRCodeByZXingNet(str + oleDbDataReader2[" 产品型号"].ToString().Trim(),200,200)); 替换文档中条形码图片标识this.replaceImg(document,replacestr2,this.GetCodeBar(oleDbDataReader2["产品型号"].ToString().Trim(),bartxt,464,150));替换文档中产品型号文字信息document.Replace(matchString,oleDbDataReader2["产品型号"].ToString().Trim(),false,true)。

综上完成了对Word 文档的二维码图片信息注入操作,在实际应用中还经常会使用PDF 格式的文档,因为PDF格式文档不需要对其直接进行写入操作,我们可以用一个函数WordToPDF(string sourcePath,string targetPath)将写好的Word 文档直接转换成Pdf 文档便可,创建Document 对象Microsoft.Office.Interop.Word.Document document = null;并实例化document = arg_9B_0.Open(ref obj,ref missing,ref missing2,ref missing3,ref missing4,ref missing5,ref missing6,ref missing7,ref missing8,ref missing9,ref missing10,ref missing11,ref missing12,ref missing13,ref missing14,ref missing15);创建目标文档_Document arg_BA_0 = document;生成Pdf 文档arg_BA_0.ExportAsFixedFormat(targetPath,arg_BA_2,arg_BA_3,arg_BA_4,arg_BA_5,arg_BA_6,arg_BA_7,arg_BA_8,arg_BA_9,arg_BA_10,arg_BA_11,arg_BA_12,arg_BA_13,arg_BA_14,ref missing15);

以上代码均执行完后,目标文档就会自动生成到指定位置,窗口右侧也会更改标识信息为“已生成”,如图4所示。

图4:模板匹配及生成进度

最终的目标文档如图5所示。

图5:目标文档

4 结语

通过一系列的具体测试,最终实现了二维码信息的批量注入功能,满足了现实中各种应用场景的实际需求,在测试时还将普通二维码升级为清晰度更高的矢量二维码,同时因为pdf 格式文档不可批量直接生成,本文利用C#语言中的Microsoft.Office.Interop.Word 相关类,将生成的word 文档批量转化为pdf 格式文档,最终实现了pdf 格式文档的批量生成。至此,目标word 文档和pdf 文档都可以被批量、快速并且准确的生成,产生了如图5的目标类文档,被企业广泛使用到实际场景中去。

猜你喜欢
批量条形码文档
浅谈Matlab与Word文档的应用接口
创意条形码
有人一声不吭向你扔了个文档
从条形码到二维码
从条形码到二维码
条形码大变身
基于RI码计算的Word复制文档鉴别
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
浅议高校网银批量代发
基于AUTOIT3和VBA的POWERPOINT操作题自动批量批改