Abstract:
The present invention provides methods and systems for steganographically encoding a file which is in a page description language (PDL) such as PostScript. Aspects of the present invention can be used to: i) encode a PDL file and generate an encoded PDL file; and ii) provide an “interpreter” which generates raster images from a PDL file. Portions of the raster images can be steganographically encoded. Encoded raster images can be printed or the raster images can be combined into a new PDL file.

Description:
RELATED APPLICATION DATA  
       [0001]     This application is a continuation of U.S. patent application Ser. No. 10/066,116, filed Jan. 30, 2002 (now U.S. Pat. No. 6,899,475). These patent documents are hereby incorporated by reference. 
     
    
     FIELD OF THE INVENTION  
       [0002]     The present invention relates to computer technology and more particularly to digital watermarking technology.  
       BACKGROUND  
       [0003]     A printed page may include graphics, text and images. The graphics, text and images on a page are positioned at specific places on the page to provide a desired effect. A page description language (PDL) is generally used to provide instructions to a printer concerning how the graphics, text and images should be positioned on a page.  
         [0004]     In most situations, an “interpreter” in the printer accepts the instructions provided by the PDL along with the necessary graphic, text and image objects. The interpreter generates appropriate raster image files to position of the ink dots which will form the desired printed page. PostScript™ which was developed by Adobe Systems Corporation is the most widely used PDL; however, there are many other PDLs that have been defined.  
         [0005]     The page layout program PageMaker™ marketed by Adobe Systems Corporation is in widespread use to generate PostScript files. While the PageMaker program is in widespread use there are also are other somewhat similar programs such as those marketed under the trademarks “Quark Express” and “InDesign”.  
         [0006]     A number of available interpreters take PostScript files and generate the raster images required by printers. One such interpreter is marketed by Adobe Systems. Another such interpreter is marketed under the trademark “PhonenixPage” by Xionics Document Technologies. Still another PostScript interpreter called “Ghostscript™” is freely available at various internet sites under the “Aladdin Ghostscript Free Public License”.  
         [0007]     Programs that can insert digital watermarks into images are in widespread use. For example the widely used image editing program “Photoshop™” includes a mechanism for inserting a watermark into an image.  
       SUMMARY OF THE PRESENT INVENTION  
       [0008]     The present invention provides a method and system for watermarking a file which is in a PDL such as PostScript. The present invention can be used to either watermark a PDL file and then generate a watermarked PDL file or the present invention can be part of the interpreter in a printer which takes a file in a PDL and which then generates watermarked raster images which are printed.  
         [0009]     The present invention includes an “interpreter” which generates raster images from the PDL file. The raster images are then watermarked using conventional watermarking techniques. Next the raster images are either printed (if the interpreter is part of a printer) or the raster images are combined into a new PDL file.  
         [0010]     The specific embodiment shown relates to a PostScript file; however, it should be understood that the invention can also be applied to files in other page description languages. PostScript is merely used as an example.  
     
    
     BRIEF DESCRIPTION OF DRAWINGS  
       [0011]      FIG. 1  is an overall flow diagram of the process.  
         [0012]      FIG. 2  is a flow diagram of the operation that take place in the watermark interpreter.  
         [0013]      FIG. 3  is a block diagram of a PostScript Interpreter.  
         [0014]      FIG. 4  shows a mask which defines areas in an image.  
         [0015]      FIG. 5  is a block diagram of an interpreter. 
     
    
     DESCRIPTION OF PREFERRED EMBODIMENT  
       [0016]     The preferred embodiment of the present invention provides a method and system for watermarking a PostScript file. Due to its construction and format, a file in a PDL such as PostScript can not be watermarked using the conventional watermarking programs such as that which is part of the Photoshop program. The preferred embodiment of the present invention is directed to watermarking a PostScript file; however; it should be understood that the invention can also be used to watermark files in various other PDL languages.  
         [0017]     The preferred embodiment utilizes elements from the Ghostscript interpreter. The source code for the Ghostscript interpreter is freely available at various internet web sites under the “Aladdin Ghostscript Free Public License”. It should be understood that while the preferred embodiment utilizes the Ghostscript interpreter, the invention can be used with other PostScript interpreters and with other PDLs.  
         [0018]     The overall operation of the invention is illustrated in  FIG. 1 . The process begins as indicated by block  101 . A page layout program such as PageMaker is used to generate a PostScript file  103 . The page layout program combines text  101 A, images  101 B and graphics  101 C with appropriate instructions and codes, to produce the desired lay out of a page. Such page layout is conventional and it results in a PostScript file  103 . The PostScript file  103  is passed to a watermarking interpreter  105  which add an appropriate watermark and then generates a new watermarked PostScript file  106 . The details of the watermarking interpreter are described below. Finally PostScript file  106  is provided to a printer which prints the desired page.  
         [0019]      FIG. 2  illustrates the operations performed by the watermarking interpreter  105 . First the watermarking interpreter generates the appropriate raster images as indicated by block  201 . A conventional interpreter mechanism, such as that available in the Ghostscript interpreter can be used to generate the raster image files. A block diagram of such a mechanism is provided in  FIG. 5 . Next, as indicated by blocks  203  and  204 , the areas in each raster image indicated by mask  401  (mask  401  is explained later) are watermarked. That is, the bits in the area indicated by mask  401  are watermarked using conventional watermarking technology. Next as indicated by block  205 , the watermarked raster images are combined into a new postscript file  207 . That is, a simple compiler program adds simple PostScript commands and combines the four raster images into a new PostScript file  207 . Creating such a Postscript file from the four raster images uses conventional technology known in the art. Finally the PostScript file  207  is sent to a printer which prints the PostScript file using conventional technology. Naturally the file  207  may be stored on conventional storage mechanisms and electronically transmitted if desired prior to printing.  
         [0020]     As indicated in  FIG. 3 , a printed page may contain a combination of images, text and graphics. The page shown in  FIG. 3  includes images  302 ,  303 , and  304 , text  305  and graphics  306  and  307 . It should be understood that the page illustrated is merely an example and a page may have a simple or complicated arrangement of text, images and graphics.  
         [0021]     In order to avoid creating visual artifacts, it may be desirable to only watermark selected portions of a page. A mask such as that shown in  FIG. 4  may be used. In the example shown the mask  401  indicates the areas where a watermarking signal should be applied. It should be understood that mask  401  is not a physical object. It is merely a designation of the areas in a page where a watermark should be applied. That is, areas where the pixels should be “tweaked” in order to apply a watermark to the page. Instead of showing areas where the page should be watermarked, the mask could alternatively show areas that should not be watermarked. The area selected for watermarking are generally areas where the application of a watermark signal will not materially degrade the image.  
         [0022]     The raster image files are watermarked using conventional watermarking technology that specifies how various bits should be changed in order to embed a watermark. For example co-pending application Ser. No. 09/694,465 entitled “Watermarking an Image in Color Plane Separations and reading such watermarks” describes technology which could be used to watermark the raster images. The content of application Ser. No. 09/694,465 (now U.S. Pat. No. 6,763,122) is hereby incorporated herein by reference.  
         [0023]     Prior to changing any bit in one of the raster images, the mask  401  is interrogated to determine if the particular bit is in a location where it is desired to apply a watermark. If the particular bit is located in the area of mask  401  indicating that the area should be watermarked, the bit is changed, otherwise the bit is not changed.  
         [0024]     A block diagram of the watermarking interpreter  105  is shown in  FIG. 5 . The watermarking interpreter  105  utilizes the well known components of the Ghostscript interpreter. Further details of the Ghostscript interpreter can be found in sources such as the “Ghostscript User Manual” by Thomas Merz (1996-97) which is widely available on the world wide web.  
         [0025]     As indicated in  FIG. 5  the interpreter takes the graphics  501 , the fonts  502 , the vectors  503  and the device controls  504  (there also may be other elements) and creates a display list  509 . The display list provides information for an image pipeline  511  and a page pipeline  512 . The output of pipelines  511  and  512  is the raster image files. In the example illustrated the raster images are CMYK images,  515 C,  5165 M,  515 Y and  515 K. Naturally in other environments these could be other types of raster images. The publicly available source code for the Ghostscript interpreter provides a mechanism for implementing the elements shown in  FIG. 5 .  
         [0026]     Each of the raster images  515 C to  516 K are then watermarked as indicated in  FIG. 2 . This can be done as shown in co-pending application Ser. No. 09/694,465 entitled “Watermarking an Image in Color Plane Separations and reading such watermarks” which in incorporated herein by reference. These images are only watermarked in the areas indicated by mask  401 . The result is four watermarked raster images.  
         [0027]     In the preferred embodiment described above, the four watermarked raster images are combined into a PostScript file as indicated in  FIG. 1 . In an alternate embodiment, the watermarking interpreter is embedded in, and is part of a particular printer. In such an embodiment, the watermarked raster images would be sent directly to the printing mechanism as is conventional. Embedding an interpreter in printers is conventional. In such a case after the raster images are watermarked, they would be directly printed rather than being combined into another PostScript file.  
         [0028]     It is also noted that in some situations only one raster image is generated and in some situation three, four or more raster images are generated. For example if the colors are RGB, three raster images are generated. In the situations where the printing utilizes hexachrome (i.e. spot colors) there would be six raster images. The term set is used to mean the number of raster images generated for the particular application.  
         [0029]     While the invention has been shown and described with respect to various preferred embodiments, it should be understood that that various changes and alterations can be made without departing from the spirit and scope of the invention. The scope of the invention is limited only by the appended claims.