Rasterize document or page

How to remove a watermark from a pdf

The watermark can be removed from the PDF documents using third-party tools. However, if you want to get a watermark that is almost impossible to remove, you can consider PDF document rasterization. GroupDocs.Watermark provides the feature to convert all the pages of a PDF document to raster images with only one line of code.

Rasterize PDF document

Following code snippet is used to rasterize the PDF document to protect added watermarks.

advanced_usage.add_watermarks_to_pdf.PdfRasterizeDocument

PdfLoadOptions loadOptions = new PdfLoadOptions();                                                       
// Specify an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
Watermarker watermarker = new Watermarker("document.pdf", loadOptions);                         
                                                                                                         
// Initialize image or text watermark                                                                    
TextWatermark watermark = new TextWatermark("Do not copy", new Font("Arial", 8));                        
watermark.setHorizontalAlignment(HorizontalAlignment.Center);                                            
watermark.setVerticalAlignment(VerticalAlignment.Center);                                                
watermark.setRotateAngle(45);                                                                            
watermark.setSizingType(SizingType.ScaleToParentDimensions);                                             
watermark.setScaleFactor(1);                                                                             
watermark.setOpacity(0.5);                                                                               
                                                                                                         
// Add watermark of any type first                                                                       
watermarker.add(watermark);                                                                              
                                                                                                         
PdfContent pdfContent = watermarker.getContent(PdfContent.class);                                        
                                                                                                         
// Rasterize all pages                                                                                   
pdfContent.rasterize(100, 100, PdfImageConversionFormat.Png);                                            
                                                                                                         
// Content of all pages is replaced with raster images                                                   
watermarker.save("document.pdf");                                                              
                                                                                                         
watermarker.close();                                                                                     
Warning
You can’t restore document content after saving the document. Rasterization significantly increases the size of the resultant PDF file.

Rasterize particular page of the PDF document

The API also allows you to rasterize any particular page of the PDF document. Following code snippet is used to rasterize a page of the PDF document.

advanced_usage.add_watermarks_to_pdf.PdfRasterizePage

PdfLoadOptions loadOptions = new PdfLoadOptions();                                                       
// Specify an absolute or relative path to your document. Ex: "C:\\Docs\\document.pdf"
Watermarker watermarker = new Watermarker("document.pdf", loadOptions);                         
                                                                                                         
// Initialize image or text watermark                                                                    
TextWatermark watermark = new TextWatermark("Do not copy", new Font("Arial", 8));                        
watermark.setHorizontalAlignment(HorizontalAlignment.Center);                                            
watermark.setVerticalAlignment(VerticalAlignment.Center);                                                
watermark.setRotateAngle(45);                                                                            
watermark.setSizingType(SizingType.ScaleToParentDimensions);                                             
watermark.setScaleFactor(1);                                                                             
watermark.setOpacity(0.5);                                                                               
                                                                                                         
// Add watermark of any type first                                                                       
PdfArtifactWatermarkOptions options = new PdfArtifactWatermarkOptions();                                 
options.setPageIndex(0);                                                                                 
watermarker.add(watermark, options);                                                                     
                                                                                                         
// Rasterize the first page                                                                              
PdfContent pdfContent = watermarker.getContent(PdfContent.class);                                        
pdfContent.getPages().get_Item(0).rasterize(100, 100, PdfImageConversionFormat.Png);                     
                                                                                                         
// Content of the first page is replaced with raster image                                               
watermarker.save("document.pdf");                                                              
                                                                                                         
watermarker.close();