//// This code is part of Document Solutions for PDF .NET demos.// Copyright (c) MESCIUS inc. All rights reserved.//usingSystem.IO;usingSystem.Drawing;usingGrapeCity.Documents.Pdf;usingGrapeCity.Documents.Pdf.Annotations; namespaceDsPdfWeb.Demos{// This sample demonstrates the use of RedactOptions.CopyImagesOnRedact property.// By default, if all or part of an image falls within a redact area, and the image// appears elsewhere in the PDF, all locations are affected, i.e. the image will look// redacted throughout the document.// The RedactOptions.CopyImagesOnRedact property allows you to change this behavior.// If that property is true (it is false by default), the image is copied prior to// applying the redact, and only the copy under the redacted area is affected by the// redact.// This sample loads a two page PDF with the same image appearing three times// on the first, and three times on the second page.// Two redact annotations are then added to the document, both cover different parts// of the first image location on the first page.// The first redact uses red overlay fill color, and (by default) affects the image// in all locations, note the red rectangle in the top left part of the image// in all locations throughout the document.// The second redact uses blue overlay, and sets CopyImagesOnRedact to true, so// that only the instance of the image under the actual redact area is affected,// note the blue rectangle in the lower right part of the first image only. // The PDF used by this sample was generated by ImageTransparency.publicclassRedactCopyImages {publicintCreatePDF(Stream stream) {var doc = newGcPdfDocument();// Load a PDF that contains the same image in several locations:usingvar fs = File.OpenRead(Path.Combine("Resources", "PDFs", "ImageTransparency.pdf")); doc.Load(fs);// Duplicate the first page: doc.Pages.ClonePage(0, 1); // This redact will affect all image locations:var redact0 = newRedactAnnotation() {Page = doc.Pages[0],Rect = newRectangleF(50, 50, 50, 50),OverlayFillColor = Color.Red, };// This redact will affect only the image at the actual redact location:var redact1 = newRedactAnnotation() {Page = doc.Pages[0],Rect = newRectangleF(120, 120, 50, 50),OverlayFillColor = Color.Blue, }; // Apply redact0 with default options: doc.Redact(redact0);// Apply redact1 with CopyImagesOnRedact on: doc.Redact(redact1, newRedactOptions() { CopyImagesOnRedact = true }); // Save the PDF: doc.Save(stream);return doc.Pages.Count; } }}