CN103500296B - 一种文本文档中数字水印的嵌入方法和装置 - Google Patents

一种文本文档中数字水印的嵌入方法和装置 Download PDF

Info

Publication number
CN103500296B
CN103500296B CN201310456022.4A CN201310456022A CN103500296B CN 103500296 B CN103500296 B CN 103500296B CN 201310456022 A CN201310456022 A CN 201310456022A CN 103500296 B CN103500296 B CN 103500296B
Authority
CN
China
Prior art keywords
emf
file
emf file
information
watermark information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310456022.4A
Other languages
English (en)
Other versions
CN103500296A (zh
Inventor
李晓妮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Li Xiaoni
Original Assignee
Achievements Of A Ruler Science And Technology Ltd Traces To Source In Beijing
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Achievements Of A Ruler Science And Technology Ltd Traces To Source In Beijing filed Critical Achievements Of A Ruler Science And Technology Ltd Traces To Source In Beijing
Priority to CN201310456022.4A priority Critical patent/CN103500296B/zh
Publication of CN103500296A publication Critical patent/CN103500296A/zh
Application granted granted Critical
Publication of CN103500296B publication Critical patent/CN103500296B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/0021Image watermarking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Image Processing (AREA)

Abstract

本发明涉及一种文本文档中数字水印的嵌入方法和装置。该方法包括:将电子格式文本文档转换为EMF文件;打开转换后的原始的EMF文件,使用其文件头参数信息创建对应的目标EMF文件;遍历原始EMF文件中的所有GDI函数及其参数信息,判断GDI函数是否为TEXTOUT,若是则读取所有字体信息并嵌入水印信息,然后复制到目标EMF文件中;若否则直接将GDI函数复制到目标EMF文件中;处理完所有的原始EMF文件后,将所有嵌入水印信息后的目标EMF文件进行最终的输出转换操作。本发明能够解决各种电子格式文本文档和纸质文本文档中的水印信息嵌入问题,实现对于重要文本文档的安全防控、溯源追踪以及内容保护。

Description

一种文本文档中数字水印的嵌入方法和装置
技术领域
本发明属于文档保护技术领域,涉及一种文本文档中数字水印的嵌入方法,具体涉及EMF增强图元文件(Enhanced Metafile,EMF)中的数字水印嵌入方法和装置。
背景技术
随着知识经济时代的快速到来,知识在现代企业竞争优势中的作用空前突出,知识的载体——电子文件,成为了现代企业运营中最宝贵、最重要的战略资源。同样在政府部门和企事业单位的办公环境中,电子文档成为信息交流和知识传递的必不可少的载体。由于在文档信息传播过程中,文档内容很容易被非法获取和篡改,因此对重要文档的保护显得尤为重要。
纵观文本文档的传播方式主要有两种:a)以电子文件格式传播。在很多情况下,一个电子文档可能会在很多机器上流转,内容被很多人浏览。如果不能有效地掌握电子文档的流转过程,极易造成泄密事件的发生。b)通过打印、扫描、复印的方式以纸质文档形式进行传播,纸质文档一旦发生流失很难追溯至文档的来源。
文本水印技术在基于文档的信息安全方面发挥着积极作用,可以有效地解决上述问题。比如将某些具有标识作用的信息,诸如文档生成时间、文档的归属等隐藏在涉密的文档数据中,这些隐秘信息在视觉上是不可见的。当文档被非法获取或复制时,通过特定的装置提取的隐藏在文本中信息可以追踪文本的源头以达到版权保护及追溯源头的作用。
但是如何很方便地将水印信息嵌入到文本文件中存在着技术障碍。现有的方法中,有针对特定的电子文档编辑和浏览软件开发了相应的系统或者插件来完成水印信息的嵌入,比如微软Office办公文件或者PDF(Portable Document Format)文件,这些软件系统本身对外提供了基于宏或者COM组件方式的开发接口,可以较为方便地进行二次开发。但是该方法的开发成本非常高:一方面要针对不同的文档软件系统开发不同的系统或者插件,而且大部分的软件不支持二次开发,比如大量的私有格式文件系统等;另外一方面,即使支持二次开发的软件系统也会有版本升级的问题,比如通用的MS Office或者Adobe Acrobat软件。不同的版本之间的接口和COM(Component Object)组件存在一定的兼容性问题,软件系统一旦升级,水印系统可能会也要进行相应的改动升级后才能支持。因此该方法非常不灵活,通用性也比较差。如果要在打印的纸质文档中嵌入水印信息,利用上述方法进行水印信息嵌入后,还需要额外的个性化的打印输出操作,无法直接在打印输出的过程中嵌入水印信息。
因此,为了方便快捷地在任意电子格式文本文档和纸质文本文档中嵌入水印信息,需要解决两个问题:1)要将各种电子格式文档统一转为一种文件格式,然后通过解析该文件格式能够准确地获取文档中的文本对象,从而通过修改文本对象属性嵌入水印信息;2)转换后的文件格式的解析过程要相对简单,比如PDF文件和PS(PostScript)文件解析过程就非常复杂,难度很大。另外PDF文件和PS文件只能通过Acrobat或者特定的软件系统才能完成打印输出,因此打印客户端需要额外安装相应的软件系统,既增加了工作量又提高了成本。而比较理想的文件格式就是EMF文件。所谓的EMF文件是一种矢量图形文件,在文件内部存储的是图形设备接口GDI(Graphic Devices Interface)函数,不同于位图文件中的像素,克服了常见位图文件的诸多缺点,比如存储空间大,速度慢,图形放缩时严重失真等。EMF文件中记录着每一个GDI函数及其参数信息,显示时通过这些函数实现图形的重绘,具有存储空间小,图形缩放不失真的优点,真正做到与设备无关。
EMF由文件头、GDI函数和EMF文件尾三部分组成。文件头里包含了图形创建时的作者信息、图形尺寸、GDI函数个数等内容。文件尾记录文件结束标志,中间的GDI函数是文件的主体,记录着图形中每一个GDI函数。应用程序打开EMF文件时执行各个GDI函数来绘制出图像,存储时将GDI函数写回EMF文件中。总之任何复杂的图形都能分解为直线、曲线、三角形、椭圆、文字等基本的图形对象,对这些图形对象的绘制均可通过系统中的GDI函数来完成。因此文档中的所有对象都可以用EMF文件来准确描述。
发明内容
本发明提供了一种文本文档中数字水印的嵌入方法和装置,用以解决现有技术中无法方便地获取各种电子格式文本文档内容中的文本对象数据问题,进而解决各种电子格式文本文档和纸质文本文档中的水印信息嵌入问题,并最终实现对于重要文本文档的安全防控、溯源追踪以及内容保护的目的。
本发明的构思在于将各种电子格式文本文档统一转换为矢量的EMF格式文件,其中每页文档对应生成一幅EMF图像;进而读取每个EMF格式文件中记录的所有GDI函数及其参数信息得到所有的文本对象数据;通过修改文本对象的属性信息嵌入水印信息,并将嵌入水印后的文本对象保存到一个新建的EMF文件中;将嵌入水印后的EMF文件转换为其他电子格式文档,或者通过调用操作系统的API函数将EMF文件发送至实际物理打印机输出,实现了电子格式文本文档和纸质文本文档中嵌入水印信息的目的。从而得到了一种文本文档中数字水印的嵌入方法和装置。
本发明的一种文本文档中数字水印的嵌入方法,包括如下步骤:
步骤一,将电子格式文本文档内容数据转换为EMF文件,其中每页数据对应生成一个EMF文件,多页的电子格式文本文档对应生成多页的EMF文件集合;
步骤二,打开一个原始的EMF文件,读取该文件的文件头参数信息,使用相同的参数信息创建对应的新的目标EMF文件;
步骤三,遍历原始EMF文件中记录的所有GDI函数及其参数信息,判断读取的GDI函数是否为TEXTOUT,若是,读取所有字体信息并嵌入水印信息,并将修改后的文本对象复制到目标EMF文件中;若否,则直接将读取的GDI函数复制到目标EMF文件中;
步骤四,判断是否处理完所有的原始EMF文件,若否,则分别执行步骤二和步骤三的操作;若是,则执行步骤五;
步骤五,将所有嵌入水印信息后的目标EMF文件进行最终的输出转换操作。
较佳地,所述的将电子格式文本文档内容数据转换为EMF文件时,应用程序调用操作系统提供的函数接口,以页为单位将文档内容数据保存为EMF格式文件,每一页对应生成一幅EMF图像;
较佳地,所述的将电子格式文本文档内容数据转换为EMF文件时,应用程序通过虚拟的EMF打印机将文档数据输出为EMF文件;
较佳地,所述的读取的所有字体信息包括字符编码、字体名称、字体大小、字符间距、字体形状、字体颜色、行间距;
较佳地,所述的读取所有字体信息后,通过替换字库来嵌入水印信息,具体为:嵌入水印信息为“0”时,保持原有的字库类型不变,嵌入水印信息“1”时,将原有字库替换为修改后的字库;
较佳地,所述的读取所有字体信息后,通过修改字符间距和行间距来嵌入水印信息;
较佳地,步骤三中,若读取的原始EMF文件中记录的GDI函数为图像对象,则将图像数据拷贝至内存空间,调用数字图像水印算法嵌入水印信息后,再将修改过的内存空间复制到目标EMF文件中;
较佳地,所述的将所有嵌入水印信息后的目标EMF文件进行最终的输出转换操作时,从EMF文件中逐条读取对操作系统函数接口的调用,按照PDF格式的标准转换为PDF文件,或者直接进行点阵化处理后输出为BMP、JPEG、GIF、TIFF、PNG图片文件,或者提取其中的文本信息另存为TXT文本文件;
较佳地,所述的将所有嵌入水印信息后的目标EMF文件进行最终的输出转换操作时,直接调用操作系统API函数,将EMF文件发送至虚拟打印机上输出,从而得到PDF、BMP、JPEG、GIF、TIFF、PNG文件;
较佳地,所述的将所有嵌入水印信息后的目标EMF文件进行最终的输出转换操作时,直接调用操作系统API函数,将EMF文件发送至物理打印机上输出,最终得到嵌入水印信息的纸质文档。
基于同一发明构思,本发明还提供了一种文本文档中数字水印的嵌入装置,包括:
原始EMF文件生成模块,用于将电子格式文本文档内容数据转换为EMF文件:
目标EMF文件创建模块,连接所述原始EMF文件生成模块,用于读取原始EMF文件的文件头参数信息,使用相同的参数信息创建对应的目标EMF文件;
原始EMF文件遍历模块,连接所述原始EMF文件生成模块,用于遍历原始EMF文件中记录的所有GDI函数及其参数信息,并判断读取的GDI函数是否为TEXTOUT;
水印信息嵌入模块,连接所述原始EMF文件遍历模块,用于读取判断为TEXTOUT的GDI函数的所有字体信息并嵌入水印信息;
目标EMF文件生成模块,连接所述水印信息嵌入模块和所述目标EMF文件创建模块,用于将嵌入水印信息的文本对象复制到目标EMF文件中,或者直接将读取的判断为非TEXTOUT的GDI函数复制到目标EMF文件中;
EMF文件输出转换模块,连接所述目标EMF文件生成模块,用于将所有嵌入水印信息后的目标EMF文件进行最终的输出转换操作。
本发明的有益效果如下:
由于本发明中,EMF文件是Windows操作系统底层打印过程中一个中间矢量文件格式,它可以描述电子格式文本文档中的所有文字、图形和图像等对象信息,因此通过EMF虚拟打印技术可以很方便地获取电子格式文本文档中的所有内容数据。
由于本发明中,EMF文件的结构相对PDF、PS和PCL(Printer Command Language)页面描述语言来说比较简单,可以遍历文件中所有的GDI函数记录信息获取所有对象数据信息,并且通过修改相应的对象数据信息属性来嵌入水印信息,然后很方便地转换为其他电子文档格式,比如PDF文件或者各种图片文件,以便更灵活地进行文档数据交换。
由于本发明中,通过Windows操作系统提供的GDI函数直接将嵌入水印后的EMF文件发送至虚拟打印机和物理打印机输出,得到嵌入水印后的其他电子格式文本文档或者纸质文档,从而达到了在各种电子格式文本文档和打印输出的纸质文档中同时嵌入水印信息的效果,并最终实现对于重要文本文档的安全防控、溯源追踪以及内容保护的目的。
附图说明
图1为实施例1中一种文本文档中数字水印的嵌入方法的实施流程示意图;
图2为实施例1中所述的word文档嵌入水印信息流程示意图;
图3为实施例2中PDF文档嵌入水印信息流程示意图;
图4为实施例1中一种文本文档中数字水印的嵌入装置的模块组成示意图。
具体实施方式
下面通过具体实施例和附图,对本发明做详细的说明。
本发明的构思在于将各种电子格式文本文档统一转换为EMF格式文件,其中每页文档对应生成一幅EMF图像;进而读取每个EMF格式文件中记录的所有GDI函数及其参数信息得到所有的文本对象数据;通过修改文本对象的属性信息嵌入水印信息,并将嵌入水印后的文本对象保存到一个新建的EMF文件中;将嵌入水印后的EMF文件转换为其他电子格式文档,或者通过调用操作系统的API函数将EMF文件发送至实际物理打印机输出,实现了电子格式文本文档和纸质文本文档中嵌入水印信息的目的。从而得到了一种文本文档中数字水印的嵌入方法和装置。
图1为实施例1中所述的一种文本文档中数字水印的嵌入方法的实施流程示意图。下面具体说明其各个步骤S101至S105。
S101,将电子格式文本文档内容数据转换为EMF文件,其中每页数据对应生成一个EMF文件,一个连续多页的电子格式文本文档会生成多页的EMF文件集合。
一般来说,有两种方法可以将电子格式文本文档内容数据转换为EMF文件。一是应用程序调用操作系统提供的函数接口,以页为单位将文档内容数据保存为EMF格式文件,每一页对应生成一幅EMF图像。二是应用程序通过虚拟的EMF打印机将文档数据输出为EMF文件。用户需要在客户端安装一个虚拟的EMF打印机,在应用程序中打印输出时不是选择通常使用的普通打印机,而是在列表中选择虚拟的EMF打印机,执行打印操作后,会在打印机首选项中设定的目录下获得转换后的EMF文件数据。
相比较而言,第一种方法需要了解EMF格式的每个细节,然后编写专用程序模块,用于生成EMF文件,这涉及到一定的工作量。而第二种方法的优点在于,应用程序本身无需理解EMF文件格式,不需要进行额外的工作,只需使用程序内部已有的打印模块就能生成所需的EMF文件。事实上,整个过程对于应用程序而言是完全透明的,在应用程序看来,整个过程只是一次普通的打印操作。当然其缺点则是需要用户额外选择虚拟EMF打印机进行输出,但是如果想实现在打印纸质文档中或者通过其他虚拟打印机(比如通过虚拟的PDF文件打印机转换PDF文件时)转换到其他格式电子文档,并且嵌入水印信息,通过第二种方法则可以取得非常理想的效果,即在文档正常打印输出的同时嵌入水印信息,对于用户来讲完全是透明的。大致的实现方法是:用户在正常的打印操作时,会选择实际的目标打印机进行打印输出,此时采用HOOK技术(又称钩子技术)截获系统所有的打印操作消息,强制将用户待打印的文档内容先发送至虚拟的EMF打印机,获得EMF格式文件,然后再将获得的EMF文件发送至实际目标打印机输出。
S102,打开一个原始的EMF文件,读取该文件的文件头参数信息,使用相同的参数信息创建对应的新的目标EMF文件。
读取的EMF文件头里包含了图形创建时的作者信息、图形尺寸、GDI函数个数等内容。另外在创建目标EMF文件时需要重新指定EMF文件的图像分辨率。
S103,遍历原始EMF文件中记录的所有GDI函数及其参数信息,判断读取的GDI函数是否为TEXTOUT,若是,读取所有字体信息并嵌入水印信息,并将修改后的文本对象复制到目标EMF文件中;若否,则直接将读取的GDI函数复制到目标EMF文件中。
读取的所有字体信息包括字符编码、字体名称、字体大小、字符间距、字体形状、字体颜色、行间距等。通过修改读取的字体信息属性来嵌入水印信息,有代表性的处理方法有两种,分别为修改字体的行间距和替换字库方式。
第一种方法,行间距编码就是在文本的每一页中,每间隔一行轮流地嵌入水印信息。但嵌入信息的行的相邻上下两行位置不动,作为参照。需嵌入信息的行根据水印数据的比特流进行轻微的上移和下移。在移动过的一行中编码一个信息比持。如果这一行上移,则编码为“1”,如果这一行下移,则编码为“0”。一般来说,大部分的文档格式都有一个持点:一段内的各行的间距是均匀的。尽管人眼已熟练于区分不均衡的情况,但是经验告诉我们:当垂直位移量等于或小于1/300英寸时人眼将无法辨认,为了方便准确地提出水印信息,通常页面上第一行和最后一行都不作为嵌入的行。
读取字符的行间距信息后,按照上面的方法修改了行间距信息,再将修改后的GDI函数作为一条记录写入目标的EMF文件中,从而完成水印信息的嵌入。
第二种方法,通过替换字库来嵌入水印信息,具体为:嵌入水印信息为“0”时,保持原有的字库类型不变,嵌入水印信息“1”时,将原有字库替换为修改后的字库。
通过修改字库的方法具有很大的优点,水印信息容量较大,可以抵抗缩放和不等分辨率的攻击,还可以用于识别经过数码相机或手机等低精度图像获取设备的图像中的水印信息识别,操作简单,鲁棒性能较高。但是需要设计新的字库文件,安装在计算机终端系统中,当文档被打印输出时,通过动态替换文档中的字体而嵌入水印信息。比如在MSOffice word文件中嵌入水印信息的流程示意图如图2所示,具体说明如下:
Step1,获取原始EMF文件中当前TEXTOUT函数及其参数信息;
Step2,获取当前TEXTOUT函数中所包含的字体信息;
Step3,判断当前字体是否需要替换,若否,则结束;若需要替换,则按照当前字体信息(大小、质量、是否加粗等)创建目标字体对象;
Step4,判断TEXTOUT函数中是否包含可用汉字,若否,则结束;若包含可用汉字,则读取TEXTOUT函数中单个的可用汉字,并根据其对应的0和1水印位串信息设置目标字体类型;
Step5,创建新的TEXTOUT函数,并输出到目标EMF文件中;
Step6,结束整个嵌入过程。
在本发明中,我们通过逐条读取EMF文件中的记录信息,然后根据前面所述的规则,改变每个字符的字体名称来嵌入水印信息,最后将处理后的GDI函数复制到新的EMF文件中。下面具体描述一下在EMF文件中通过替换字库信息嵌入水印的思想。
在原有的EMF文件中,对于一个连续的具有相同属性的字符串而言,只需要一条GDI函数来描述。由于嵌入水印信息的需要,每个字符可能要使用不同的字体名称,因此有可能要分拆为多条GDI函数写入新的EMF文件中。比如“我爱北京天安门”是仿宋字体,在原始文档中有1条文本输出记录:
selectobject font(仿宋)
textoutw 我爱北京天安门
当需要嵌入水印时,我们需要将这整条记录拆成单个的字符,然后根据要嵌入的信息设定每个字符的字体信息属性进行输出。假设嵌入信息为“0101010”,嵌“0”的汉字对应的字体为“连笔仿宋”,嵌“1”的字体为“断笔仿宋”,最后的效果可能会变成:
在上述记录拆分之前有一个重要的预处理工作,即将从EMF文件中读取的所有字符需要按照位置信息从上到下、从左到右的顺序进行重排序。因为在很多不规则排版的页面中,如图文混排文档,EMF文件中的GDI函数记录不是按照正常的阅读习惯顺序排列的。页面中的标注、页眉、页脚可能在EMF文件中正文前面出现,这样会造成信息嵌入时的文字顺序和信息提取时的文字顺序不一致,尤其对于打印扫描后的图片文件而言,只能按照字符的位置顺序进行水印信息的提取。因此,我们在嵌入信息之前,要先对EMF文件中的TEXTOUT函数按照每个字符在页面中的位置进行排序,从而使得文字内容看起来符合我们的阅读习惯。
由于EMF文件中每一条TEXTOUT函数作用的效果与它相邻的多条记录相关,比如SELECTOBJECT,SETBKCOLOR等。因此如果直接改变TEXTOUT记录在EMF文件中出现的位置可能造成不可控的效果。为此,我们尝试将待嵌入的水印信息位串进行反排序,使得按照TEXTOUT记录顺序嵌入的水印信息位串和按照阅读习惯排列的字符序列所代表的水印信息位串保持一致。举一个例子说明一下。
假设1,所待嵌入的水印信息位串为“1011001”。
假设2,水印信息的载体字符串为“我爱北京天安门”,如果每一个字符代表1bit信息的话,则根据阅读习惯,我们期望的嵌入方式为表1所示:
表1.嵌入方式列表
字符
水印信息 1 0 1 1 0 0 1
假设3,在实际EMF文件中,水印载体字符串被拆分为4条TEXTOUT记录,它们出现的顺序为:
如果按照在EMF文件中实际出现的顺序来分配水印信息位串,我们就不能得到假设2中的结果。本发明中,我们将会把水印信息位串进行反排序,使得每个字符对应正确的水印信息位串,具体为:
Step1,将4条TEXTOUT记录存为表2方式。
表2.TEXTOUT记录存储列表
index_origin 内容 index_YX usable_count offset_index
1 NULL 1 NULL
2 北京 NULL 2 NULL
3 天安门 NULL 3 NULL
4 NULL 1 NULL
其中index_origin为每条TEXTOUT记录在EMF文件中的原始序号;index_YX为按阅读习惯从上到下、从左到右的位置顺序排序后的序号;usable_count为每条TEXTOUT记录中有效字符个数,offset_index为该条TEXTOUT记录所对应的水印信息位串在整个位串中的起始位置。
Step2,按照位置排序后形成新的序列,如表3所示.
表3.排序后形成的新序列列表
index_origin 内容 index_YX usable_count offset_index
1 1 1 NULL
4 2 1 NULL
2 北京 3 2 NULL
3 天安门 4 3 NULL
Step3,按照上述位置顺序,将每条TEXTOUT记录与嵌入信息的位置进行对应,如表4所示。
表4.TEXTOUT记录与嵌入信息的位置对应列表
index_origin 内容 index_YX usable_count offset_index
1 1 1 0
4 2 1 1
2 北京 3 2 2
3 天安门 4 3 4
比如,“天安门”有3个字符,对应在原始水印信息位串中的起始位置为4,则它代表的水印信息位串应该为“001”。
Step4,再按照原始编号index_origin进行排序,如表5所示。
表5.按照原始编号index_origin进行排序的结果列表
index_origin 内容 index_YX usable_count offset_index
1 1 1 0
2 北京 3 2 2
3 天安门 4 3 4
4 2 1 1
则最后的水印嵌入顺序和效果为:
我 msg[0]=1
北 msg[2]=1
京 msg[3]=1
天 msg[4]=0
安 msg[5]=0
门 msg[6]=1
爱 msg[1]=0
但如果按照阅读习惯顺序,我们可以得到假设2所期望的结果。
上述提到的都是有关文本数据,如果原始EMF文件中记录的GDI函数为图像对象时,将图像数据拷贝至内存空间,调用数字图像水印算法嵌入水印信息后,再将修改过的内存空间复制到目标EMF文件中,从而可以实现电子文档内容中图像对象中的水印信息嵌入。
S104,判断是否处理完所有的原始EMF文件,若否则分别执行步骤S102和步骤S103的操作;若是,则执行步骤S105;
S105,将所有嵌入水印信息后的目标EMF文件进行最终的输出转换操作。
将所有嵌入水印信息后的目标EMF文件进行最终的输出转换操作时,从EMF文件中逐条读取对操作系统函数接口的调用,按照PDF格式的标准转换为PDF文件,或者直接进行点阵化处理后输出为BMP、JPEG、GIF、TIFF、PNG图片文件,或者提取其中的文本信息另存为TXT文本文件;
将所有嵌入水印信息后的目标EMF文件进行最终的输出转换操作时,直接调用操作系统API函数,将EMF文件发送至虚拟打印机上输出,从而得到PDF、BMP、JPEG、GIF、TIFF、PNG文件;
将所有嵌入水印信息后的目标EMF文件进行最终的输出转换操作时,直接调用操作系统API函数,将EMF文件发送至物理打印机上输出,最终得到嵌入水印信息的纸质文档;
实施例2,本实施例考虑在PDF文件中嵌入水印信息的情况。
不同于MS Office word文件,在Acrobat Reader浏览器中打开PDF文件选择虚拟EMF打印机输出为EMF文件时,其中的矢量文字对象转换后不再是矢量的TEXTOUT函数记录,而是每个字符都输出为一个图形,其中包括点、线、曲线,最后会使用FILLPATH命令填充这块区域。比如,以下是一个字符的对应的输出记录:
R3313:[059]EMR_BEGINPATH(s=8)
R3314:[027]EMR_MOVETOEX(s=16){ptl(3369,3594)}
R3315:[088]EMR_POLYBEZIERTO16(s=40){rclBounds(0,0,-1,-1),nbPoints:3,
P1(3371,3598)-Pn(3375,3607)}
R3316:[054]EMR_LINETO(s=16){ptl(3417,3602)}
R3317:[088]EMR_POLYBEZIERTO16(s=40){rclBounds(0,0,-1,-1),
nbPoints:
……
R3396:[060]EMR_ENDPATH(s=8)
R3397:[062]EMR_FILLPATH(s=24){rclBounds(3292,3594,3451,3756)}
从FILLPATH记录中可以获得汉字在页面中的位置、区域,但是无法得到汉字的编码、字体、大小等信息。此时水印信息嵌入方式可以分为三种情况:
第1种情况,读取EMF文件中FILLPATH记录信息,采用基于图形变换的方法嵌入水印信息,然后再将修改后的FILLPATH记录写入目标EMF文件中。
第2种情况,将从EMF文件中读取的FILLPATH记录的文字曲线数据转换为字符点阵图像,并利用基于二值文本图像水印的算法嵌入水印信息,然后再将嵌入水印后的字符图像作为一个独立的图像对象写入到目标EMF文件中。
第3种情况,将从EMF文件中读取的FILLPATH记录的文字曲线数据还原回文字对象,然后再按照实施例中替换字库的方式嵌入水印信息。这就需要从原始的PDF文件中读取每个汉字的位置、编码、大小、颜色、字体名称、是否粗体等所有信息,并按照位置将PDF文件中读取的字符跟EMF文件中的图形进行匹配,从而将图形对象恢复为文字对象,嵌入水印信息后写入到目标EMF文件中。具体流程示意图如图3所示:
Step1,读取EMF文件中FILLPATH记录,获取当前文字曲线区域的外接矩形;
Step2,获取PDF文件中下一个字符的坐标位置信息和相关字体信息;
Step3,判断读取的字符的坐标位置是否处在FILLPATH记录中文字曲线区域外接矩形的内部,若是,则该图形区域可以恢复为文本对象,转入Step4;
Step4,按照这个字符对应的字体信息,比如大小、质量、是否加粗等,创建目标字体对象;
Step5,利用字库替换的方法嵌入水印信息,根据每个字符对应的信息位串设置目标字体类型;
Step6,创建新的TEXTOUT记录,并输出到目标EMF文件中;
Step7,结束整个嵌入过程。
基于同一发明构思,本发明还提供了一种文本文档中数字水印的嵌入装置,其模块组成及连接关系如图4所示,对各模块分别说明如下:
原始EMF文件生成模块,用于将电子格式文本文档内容数据转换为EMF文件;
目标EMF文件创建模块,连接所述原始EMF文件生成模块,用于读取原始EMF文件的文件头参数信息,使用相同的参数信息创建对应的目标EMF文件;
原始EMF文件遍历模块,连接所述原始EMF文件生成模块,用于遍历原始EMF文件中记录的所有GDI函数及其参数信息,并判断读取的GDI函数是否为TEXTOUT;
水印信息嵌入模块,连接所述原始EMF文件遍历模块,用于读取判断为TEXTOUT的GDI函数的所有字体信息并嵌入水印信息;
目标EMF文件生成模块,连接所述水印信息嵌入模块和所述目标EMF文件创建模块,用于将嵌入水印信息的文本对象复制到目标EMF文件中,或者直接将读取的判断为非TEXTOUT的GDI函数复制到目标EMF文件中;
EMF文件输出转换模块,连接所述目标EMF文件生成模块,用于将所有嵌入水印信息后的目标EMF文件进行最终的输出转换操作。
由于本发明中,EMF文件是Windows操作系统底层打印过程中一个中间矢量文件格式,它可以描述电子格式文本文档中的所有文字、图形和图像等对象信息,因此通过EMF虚拟打印技术可以很方便地获取电子格式文本文档中的所有内容数据。
由于本发明中,EMF文件的结构相对PDF、PS和PCL页面描述语言来说比较简单,可以遍历文件中所有的GDI函数记录信息获取所有对象数据信息,并且通过修改相应的对象数据信息属性来嵌入水印信息,然后很方便地转换为其他电子文档格式,比如PDF文件或者各种图片文件,以便更灵活地进行文档数据交换。
由于本发明中,通过Windows操作系统提供的GDI函数直接将嵌入水印后的EMF文件发送至虚拟打印机和物理打印机输出,得到嵌入水印后的其他电子格式文本文档或者纸质文档,从而达到了在各种电子格式文本文档和打印输出的纸质文档中同时嵌入水印信息的效果,并最终实现对于重要文本文档的安全防控、溯源追踪以及内容保护的目的。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也包含这些改动和变型在内。

Claims (7)

1.一种文本文档中数字水印的嵌入方法,其步骤包括:
步骤一:将电子格式文本文档内容数据转换为EMF文件,其中每页数据对应生成一个EMF文件,多页的电子格式文本文档对应生成多页的EMF文件集合;
步骤二:打开一个原始的EMF文件,读取其文件头参数信息,使用相同的参数信息创建对应的目标EMF文件;
步骤三:遍历原始EMF文件中记录的所有GDI函数及其参数信息,判断读取的GDI函数是否为TEXTOUT,若是,读取所有字体信息并嵌入水印信息,并将修改后的文本对象复制到目标EMF文件中;若否,则直接将读取的GDI函数复制到目标EMF文件中;在嵌入水印信息的过程中,根据嵌入水印信息的需要,将GDI函数分拆为多条GDI函数写入新的EMF文件中;在嵌入水印信息之前,对EMF文件中的TEXTOUT函数按照每个字符在页面中的位置进行排序,并将待嵌入的水印信息位串进行反排序,使得按照TEXTOUT记录顺序嵌入的水印信息位串和按照阅读习惯排列的字符序列所代表的水印信息位串保持一致;
对于PDF文件,将其转换为EMF文件后,水印信息的嵌入方法是:将从EMF文件中读取的FILLPATH记录的文字曲线数据还原回文字对象,然后嵌入水印信息,包括以下步骤:
Step1,读取EMF文件中FILLPATH记录,获取当前文字曲线区域的外接矩形;
Step2,获取PDF文件中下一个字符的坐标位置信息和相关字体信息;
Step3,判断读取的字符的坐标位置是否处在FILLPATH记录中文字曲线区域外接矩形的内部,若是,则该文字曲线区域可以恢复为文本对象,转入Step4;
Step4,按照这个字符对应的字体信息,创建目标字体对象;
Step5,嵌入水印信息,根据每个字符对应的信息位串设置目标字体类型;
Step6,创建新的TEXTOUT记录,并输出到目标EMF文件中;
Step7,结束整个嵌入过程;
步骤四:判断是否处理完所有的原始EMF文件,若否,则分别执行步骤二和步骤三的操作;若是,则执行步骤五;
步骤五:将所有嵌入水印信息后的目标EMF文件进行最终的输出转换操作。
2.如权利要求1所述的方法,其特征在于:步骤一采用下列方法之一将电子格式文本文档内容数据转换为EMF文件:
1)应用程序调用操作系统提供的函数接口,以页为单位将文档内容数据保存为EMF格式文件,每一页对应生成一幅EMF图像;
2)应用程序通过虚拟的EMF打印机将文档数据输出为EMF文件。
3.如权利要求1所述的方法,其特征在于:步骤三所述字体信息包括字符编码、字体名称、字体大小、字符间距、字体形状、字体颜色和行间距。
4.如权利要求1所述的方法,其特征在于:步骤三通过替换字库来嵌入水印信息,在嵌入水印信息为“0”时,保持原有的字库类型不变,在嵌入水印信息“1”时,将原有字库替换为修改后的字库。
5.如权利要求1所述的方法,其特征在于:步骤三通过修改字符间距和行间距来嵌入水印信息。
6.如权利要求1所述的方法,其特征在于:步骤三中,若读取的原始EMF文件中记录的GDI函数为图像对象,则将图像数据拷贝至内存空间,调用数字图像水印算法嵌入水印信息后,再将修改过的内存空间复制到目标EMF文件中。
7.如权利要求1所述的方法,其特征在于,步骤五所述最终的输出转换操作为下列中的一种或多种:
1)从EMF文件中逐条读取对操作系统函数接口的调用,按照PDF格式的标准转换为PDF文件,或者直接进行点阵化处理后输出为BMP、JPEG、GIF、TIFF、PNG图片文件,或者提取其中的文本信息另存为TXT文本文件;
2)直接调用操作系统API函数,将EMF文件发送至虚拟打印机上输出,从而得到PDF、BMP、JPEG、GIF、TIFF、PNG文件;
3)直接调用操作系统API函数,将EMF文件发送至物理打印机上输出,最终得到嵌入水印信息的纸质文档。
CN201310456022.4A 2013-09-29 2013-09-29 一种文本文档中数字水印的嵌入方法和装置 Active CN103500296B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310456022.4A CN103500296B (zh) 2013-09-29 2013-09-29 一种文本文档中数字水印的嵌入方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310456022.4A CN103500296B (zh) 2013-09-29 2013-09-29 一种文本文档中数字水印的嵌入方法和装置

Publications (2)

Publication Number Publication Date
CN103500296A CN103500296A (zh) 2014-01-08
CN103500296B true CN103500296B (zh) 2017-01-18

Family

ID=49865504

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310456022.4A Active CN103500296B (zh) 2013-09-29 2013-09-29 一种文本文档中数字水印的嵌入方法和装置

Country Status (1)

Country Link
CN (1) CN103500296B (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103793665A (zh) * 2014-03-06 2014-05-14 北京淦蓝润和信息技术有限公司 电子文档的处理方法及装置
CN104156646A (zh) * 2014-08-08 2014-11-19 中国联合网络通信集团有限公司 文档打印的终端鉴权方法和设备
CN104361268A (zh) * 2014-11-28 2015-02-18 广州视源电子科技股份有限公司 一种水印的嵌入和读取方法、装置及系统
CN106033403B (zh) * 2015-03-20 2019-05-31 广州金山移动科技有限公司 一种文本转换方法及装置
CN108664457A (zh) * 2017-04-01 2018-10-16 北大方正集团有限公司 Pdf文件处理方法及装置
CN107423629B (zh) * 2017-04-12 2020-10-27 北京溯斐科技有限公司 一种文件信息输出防泄密和溯源追踪的方法和系统
CN107248134B (zh) * 2017-04-25 2021-05-11 李晓妮 一种文本文档中的信息隐藏方法和装置
CN107302645B (zh) * 2017-04-27 2019-08-16 珠海赛纳打印科技股份有限公司 一种图像处理装置及其图像处理方法
CN107688731B (zh) * 2017-08-29 2021-03-30 中新网络信息安全股份有限公司 一种基于文本文档保护的数字水印算法
CN109670281A (zh) * 2017-10-16 2019-04-23 北京大学 电子文档的处理方法和装置
CN108052491B (zh) * 2017-11-22 2021-02-26 中贸促商事服务有限公司 一种证件文档的自动处理方法和装置
CN108509776B (zh) * 2018-04-11 2020-04-17 北京指掌易科技有限公司 页面处理方法、装置及电子终端
CN108711131B (zh) * 2018-04-28 2022-08-16 北京数科网维技术有限责任公司 基于图像特征匹配的水印方法和装置
CN108959957A (zh) * 2018-06-11 2018-12-07 安徽引航科技有限公司 一种基于简历隐私保护的简历分享方法
CN110874456B (zh) * 2018-08-31 2022-04-26 浙江大学 水印嵌入和水印提取方法、装置及数据处理方法
CN109635525A (zh) * 2018-12-11 2019-04-16 上海智臻智能网络科技股份有限公司 水印的添加方法、装置、设备及存储介质
CN111381781A (zh) * 2018-12-29 2020-07-07 北京鼎普科技股份有限公司 一种打印文件的处理方法及装置
CN110188516A (zh) * 2019-04-30 2019-08-30 广州迅维信息安全技术有限公司 隐形水印的方法及装置
CN110809763A (zh) 2019-05-20 2020-02-18 阿里巴巴集团控股有限公司 使用带有时间戳的嵌入式版权信息识别版权材料
WO2019144978A2 (en) 2019-05-20 2019-08-01 Alibaba Group Holding Limited Identifying copyrighted material using embedded copyright information
SG11202002417PA (en) 2019-05-20 2020-04-29 Alibaba Group Holding Ltd Identifying copyrighted material using copyright information embedded in tables
ES2882124T3 (es) 2019-05-20 2021-12-30 Advanced New Technologies Co Ltd Identificación de material protegido por derechos de autor utilizando información de derechos de autor incrustada
EP3673397B1 (en) 2019-05-20 2022-11-09 Advanced New Technologies Co., Ltd. Identifying copyrighted material using copyright information embedded in electronic files
SG11202002700PA (en) 2019-05-20 2020-04-29 Alibaba Group Holding Ltd Copyright protection based on hidden copyright information
CN110809762A (zh) 2019-05-20 2020-02-18 阿里巴巴集团控股有限公司 使用嵌入式版权信息识别版权材料
SG11202002708TA (en) 2019-05-20 2020-04-29 Alibaba Group Holding Ltd Identifying copyrighted material using embedded copyright information
CN110428356B (zh) * 2019-07-22 2023-04-28 中孚安全技术有限公司 一种纸质打印件暗水印溯源方法、系统、终端及存储介质
CN110609809A (zh) * 2019-09-23 2019-12-24 中国银行股份有限公司 一种数字化文件获取方法及装置
CN112035804B (zh) * 2020-09-01 2024-03-15 珠海豹趣科技有限公司 一种在文档页面中插入水印标识的方法、装置、电子设备及存储介质
CN112150340A (zh) * 2020-10-14 2020-12-29 中国农业银行股份有限公司 一种数字水印的处理方法及装置
CN112650956A (zh) * 2021-01-06 2021-04-13 携程旅游信息技术(上海)有限公司 Excel文档追踪方法、系统、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101408836A (zh) * 2007-10-09 2009-04-15 北京书生国际信息技术有限公司 一种打印实现方法
CN102968582A (zh) * 2012-12-13 2013-03-13 北京大学 基于字符结构特征的文本水印嵌入和提取方法
CN102999299A (zh) * 2011-09-13 2013-03-27 北京路模思科技有限公司 在Windows打印过程中监控打印数据的系统和方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008085695A (ja) * 2006-09-28 2008-04-10 Fujitsu Ltd 電子透かし埋め込み装置および検出装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101408836A (zh) * 2007-10-09 2009-04-15 北京书生国际信息技术有限公司 一种打印实现方法
CN102999299A (zh) * 2011-09-13 2013-03-27 北京路模思科技有限公司 在Windows打印过程中监控打印数据的系统和方法
CN102968582A (zh) * 2012-12-13 2013-03-13 北京大学 基于字符结构特征的文本水印嵌入和提取方法

Also Published As

Publication number Publication date
CN103500296A (zh) 2014-01-08

Similar Documents

Publication Publication Date Title
CN103500296B (zh) 一种文本文档中数字水印的嵌入方法和装置
US7583410B1 (en) System to create image transparency in a file generated utilizing a print stream
CN1195280C (zh) 在文档中嵌入信息及检测和防止抽取嵌入信息的方法和系统
CN107302645B (zh) 一种图像处理装置及其图像处理方法
CN108415887A (zh) 一种pdf文件向ofd文件转化的方法
CN108052491A (zh) 一种证件文档的自动处理方法和装置
CN101443790A (zh) 数字图像中的非回流内容的有效处理
Zhong et al. Data Hiding in a Kind of PDF Texts for Secret Communication.
CN102567938B (zh) 用于西文水印处理的水印图像分块方法和装置
EP2758919B1 (en) Apparatus for tracing a document in an electronic publication
CN107066844A (zh) 一种纸质文档安全管控与溯源追踪的方法和装置
EP1730653B1 (en) Systems and methods for identifying complex text in a presentation data stream
JP4673200B2 (ja) 印刷処理システムおよび印刷処理方法
Norrie et al. Print-n-link: weaving the paper web
Stojanov et al. A new property coding in text steganography of Microsoft Word documents
CN112800398A (zh) 一种对pdf文件流转的追踪方法
Zhang et al. Research on document digitization processing technology
Myers et al. Signal separation for nonlinear dynamical systems
US20150169508A1 (en) Obfuscating page-description language output to thwart conversion to an editable format
CN109800547B (zh) 一种用于word文档保护和分发跟踪的信息快速嵌入和提取的方法
CN115270084A (zh) 一种基于截图信息保护的盲水印加密实现方法
CN112307725B (zh) 一种在二维制图界面添加表格信息的方法
KR101758098B1 (ko) Pdf 문서에 포함된 문자의 모양 유지 복사를 위한 전자 단말 장치 및 상기 전자 단말 장치의 pdf 문서에 포함된 문자에 대한 모양 유지 복사 방법
CN116824598B (zh) 数字化文字作品版权保护的方法及装置
JP2005253004A (ja) 情報処理装置及び方法、並びに、コンピュータプログラム及びコンピュータ可読記憶媒体

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20170509

Address after: 266555, unit 1, building 26, Mount Lu Road, Huangdao District, Qingdao District, Shandong,

Patentee after: Li Xiaoni

Address before: 100085, Beijing, Haidian District information industry base on the third floor, No. 1, building three, paragraph 3200, C

Patentee before: Achievements of a ruler Science and Technology Ltd. traces to the source in Beijing

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20191129

Address after: 100081 19 floor 2205-1, building 3, 34 Zhongguancun South Street, Haidian District, Beijing.

Patentee after: Beijing ABB Technology Co., Ltd.

Address before: 266555, unit 1, building 26, Mount Lu Road, Huangdao District, Qingdao District, Shandong,

Patentee before: Li Xiaoni

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210305

Address after: 266555 unit 1, unit 26, Mount Lu Road, Mount Lu Road, Huangdao District, Qingdao, Shandong 602

Patentee after: Li Xiaoni

Address before: 100081 2205-1, 19th floor, building 3, 34 Zhongguancun South Street, Haidian District, Beijing

Patentee before: SOFOSOFI TECH. Co.,Ltd.

TR01 Transfer of patent right