背景技术
数字水印(Digital Watermarking)技术是将一些标识信息(即数字水印)直接嵌入数字载体当中(包括多媒体、文档、软件等)或是间接表示(修改特定区域的结构),且不影响原载体的使用价值,也不容易被探知和再次修改,但可以被生产方识别和辨认。
数字水印作为一种数字保护的手段,通过在电子文件上添加水印的方式,能为版权信息的归属提供有力的证据,同时还能起到监视被保护数据的传播、真伪鉴别以及非法拷贝控制等作用。通过这些隐藏在载体中的信息,可以达到确认内容创建者、购买者、传送隐秘信息或者判断载体是否被篡改等目的。数字水印是保护信息安全、实现防伪溯源、版权保护的有效办法,是信息隐藏技术研究领域的重要分支和研究方向。
对于电子文件添加多行文字水印,由于其排版布局、字体样式等个性化定制信息较多,这种复杂的水印实现起来较为困难,主要原因如下:
1.多行文字水印需要对每行文字的字体、间距、大小、样式、对齐方式等信息都可以独立设置。
2.多行文字水印中的后续行文字起始位置需要根据前面行的文字位置进行计算,这涉及到前面行文字的字体、字号、行间距、对齐方式等因素影响。如果文字水印有旋转角度更为复杂。
3.电子文件添加多行文字水印时,需要根据水印被添加所在的位置和对齐方式,计算水印的起始坐标。
4.不同的电子文件,比如PDF或JPG文件格式,在添加水印时的坐标系统不同,导致在以平铺方式添加水印时的位置计算需要进行坐标转换。
综合以上问题,截至目前业界中并未发现解决此问题的成熟方案,而本发明则正是解决这一问题,通过统一的多行文字水印计算方法,实现不同电子文件添加多行文字水印的解决方案。
目前业界中常见的对电子文件添加文字水印,文字水印一般只有一行文字。即使有多行的文字水印也只能设置成为相同的字号、字体等。不能满足复杂的需求。
发明内容
针对现有技术中存在的电子水印复杂度不高的问题,本发明的目的是提供一种多行文字水印的制作方法。
为实现上述目的,本发明采用如下技术方案:
一种多行文字水印的制作方法,包括以下步骤:步骤1,将多行文字转换生成水印图片;步骤2,计算水印图片的高度和宽度;步骤3,判断待添加水印图片的文件类型;步骤4,根据文件类型,建立与文件类型相对应的坐标系;步骤5,将水印图片添加到文件中。
根据本发明的一实施例,步骤1进一步包括以下步骤:步骤1.1,计算多行文字实际占用的区域大小;步骤1.2,在水印图片的背景上绘制多行文字;步骤1.3,绘制完所有的文字后,生成水印图片。
根据本发明的一实施例,步骤1.1进一步包括以下步骤:遍历多行水印文字,根据每一行独立设定的字体、字号,计算出单行文字实际占用的高度和宽度;重复以上操作,累计单行文字占用的高度以及当前行与下一行的行间距,计算文字行占用的最大宽度;设定水印图片的实际区域大小;根据计算的实际区域大小,生成水印图片的背景。
根据本发明的一实施例,步骤1.2进一步包括以下步骤:计算当前行的绘制坐标,其中每行文字的纵坐标起始位置=上一行的行高+上一行的行间距;根据每行水印文字的对齐方式绘制确定文字的横坐标;重复以上操作,直至结束遍历。
根据本发明的一实施例,步骤2进一步包括以下步骤:旋转水印图片;获取旋转后的水印图片占用外围区域的四个顶点坐标;旋转后区域宽度=最大的顶点横坐标最小的顶点横坐标;旋转后区域高度=最大的顶点纵坐标最小的顶点纵坐标。
根据本发明的一实施例,步骤4进一步包括以下步骤:对于pdf文件,其左下角为坐标原点,向上方向为纵向正坐标,向右方向为横向正坐标。
根据本发明的一实施例,步骤4进一步包括以下步骤:对于jpg文件,其左上角为坐标原点,向下方向为纵向正坐标,向右方向为横向正坐标。
根据本发明的一实施例,步骤5进一步包括以下步骤:指定水印间距,不指定水印行列数,则根据电子文件的坐标原点,按照行列间距重复绘制多行水印图片。
根据本发明的一实施例,步骤5进一步包括以下步骤:指定水印行列数,不指定水印间距,则根据水印行数、列数及单页的横向、纵向尺寸,第一列水印图片紧靠页左边,最后一列水印图片紧靠页面右边,第一行水印图片紧靠页面顶部,最后一行水印图片紧靠页面底部,平铺后的水印图片占用区域与页面区域相等。
根据本发明的一实施例,步骤5进一步包括以下步骤:既指定水印间距,也指定水印行列数,则以电子文件页面的中心为坐标原点,向横向和纵向外侧进行水印图片的平铺,水印图片根据设置进行重复绘制,当重复的列数和行数达到指定的数量时将不再进行绘制。
在上述技术方案中,本发明的多行文字水印的制作方法实现了针对不同类型的电子文件添加多行文字水印,并且文字水印中的每行文字都能支持字体样式、字体大小、对齐方式、行间距等不同设置。
具体实施方式
下面结合附图和实施例进一步说明本发明的技术方案。
本发明的思路不是直接在电子文件上绘制多行文字水印,而是分成两个问题进行解决。第一个问题是多行文字水印的实现,第二个问题是电子文件上添加多行文字水印。因此,参照图1,本发明公开的多行文字水印的制作方法可以分为5个步骤,下面来进一步详细说明。
S1:将多行文字转换生成水印图片。如图2所示,本步骤可以分解为S1.1~S1.3三个子步骤。
S1.1,计算多行文字实际占用的区域大小。具体来说,包括以下步骤:
遍历多行水印文字,根据每一行独立设定的字体、字号,计算出单行文字实际占用的高度和宽度。
重复以上操作,累计单行文字占用的高度以及当前行与下一行的行间距,计算文字行占用的最大宽度。
设定水印图片的实际区域大小,水印图片的实际区域大小为:宽度=最大行的宽度,高度=累计的高度。
根据计算的实际区域大小,生成水印图片的背景。
S1.2,通过遍历多行水印文字,逐行绘制每行文字,从而在水印图片的背景上绘制多行文字。具体来说,包括以下步骤:
计算当前行的绘制坐标,其中每行文字的纵坐标起始位置=上一行的行高+上一行的行间距。
根据每行水印文字的对齐方式绘制确定文字的横坐标,即绘制文字信息至固化图片(水印图片的背景)上。
重复以上操作,直至结束遍历。
S1.3,绘制完所有的文字后,生成水印图片。
S2:计算水印图片的高度和宽度,具体来说,分为以下几个步骤:
旋转水印图片;
获取旋转后的水印图片占用外围区域的四个顶点坐标;
旋转后区域宽度=最大的顶点横坐标最小的顶点横坐标;
旋转后区域高度=最大的顶点纵坐标最小的顶点纵坐标。
如图3所示,步骤2为对水印图片进行旋转操作,并且绘制生成水印图片。进行旋转后的矩形区域的计算时,首先根据矩阵变换,获取旋转后的水印图片占用外围区域的四个顶点坐标,再计算其宽度和高度。特别的,若水印图片不进行旋转,则可以认为旋转0度,同样适用于上述公式。
S3:判断待添加水印图片的文件类型。电子文件的坐标体系不一致是电子文件上添加多行文字水印首先碰到的问题。因此在进行坐标计算时,首先需要判断文件类型,生成对应的坐标系,其次根据不同的坐标体系,进行坐标参数转换计算。
S4:根据文件类型,建立与文件类型相对应的坐标系,以文件格式PDF和JPG为例
对于pdf文件,其左下角为坐标原点,向上方向为纵向正坐标,向右方向为横向正坐标。
对于jpg文件,其左上角为坐标原点,向下方向为纵向正坐标,向右方向为横向正坐标。
上述两个例子仅作为示例,而并非本发明的限制,根据不同的文件类型,可以有不同的对应坐标系,本发明不以此为限。
S5:将水印图片添加到文件中。
电子文件添加前述以图片形式实现的多行文字水印,会有不需要平铺和需要平铺水印的需求。对于不需要平铺水印的情况,本发明采取九宫格的整体定位方式,将水印定位在页面的九个方位。为了提高视觉效果,还可以在水印图片周围预留一点空间。
而对于电子文件需要平铺水印的情况,对多行水印图片的平铺设置,主要通过设置水印与水印的间距和行列数量来指定,组合情况如下表所示,可以分为3种情况:
1.指定水印间距,不指定水印行列数,如图4所示,则根据电子文件的坐标原点,按照行列间距重复绘制多行水印图片。图4中圆圈位置即表示坐标原点的位置。
2.指定水印行列数,不指定水印间距,如图5所示,则根据水印行数、列数及单页的横向、纵向尺寸,第一列水印图片紧靠页左边,最后一列水印图片紧靠页面右边,第一行水印图片紧靠页面顶部,最后一行水印图片紧靠页面底部,平铺后的水印图片占用区域与页面区域相等。
单个水印的横向间距和纵向间距的计算公式为:
横向间距:(页面宽度-(水印图片的宽度×列数))/(列数-1)
纵向间距:(页面高度-(水印图片的高度×行数))/(行数-1)
3.既指定水印间距,也指定水印行列数,如图6所示,则以电子文件页面的中心为坐标原点,向横向和纵向外侧进行水印图片的平铺,水印图片根据设置进行重复绘制,当重复的列数和行数达到指定的数量时将不再进行绘制。图6中圆圈位置即表示坐标原点的位置。
综上所述,本发明具有以下优点:
1.提出并实现了在电子文件上添加多行文字水印,并且多行文字水印中的每行文字都可以独立指定字体、字号、颜色、对齐方式等。
2.通过将文字水印转换成图片方式,实现多行文字中每行文字相对固化,将复杂的每行文字位置计算转换为图片坐标位置计算,降低了位置计算的难度。
3.针对文字水印旋转后不规则问题,将之转换成为矩形图片方式,便于多行水印平铺重复处理。
本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,而并非用作为对本发明的限定,只要在本发明的实质精神范围内,对以上所述实施例的变化、变型都将落在本发明的权利要求书范围内。