RedactCopyImages.cs
C# VB
//// This code is part of Document Solutions for PDF .NET demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System.IO;using System.Drawing;using GrapeCity.Documents.Pdf;using GrapeCity.Documents.Pdf.Annotations;
namespace DsPdfWeb.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. public class RedactCopyImages { public int CreatePDF(Stream stream) { var doc = new GcPdfDocument(); // Load a PDF that contains the same image in several locations: using var 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 = new RedactAnnotation() { Page = doc.Pages[0], Rect = new RectangleF(50, 50, 50, 50), OverlayFillColor = Color.Red, }; // This redact will affect only the image at the actual redact location: var redact1 = new RedactAnnotation() { Page = doc.Pages[0], Rect = new RectangleF(120, 120, 50, 50), OverlayFillColor = Color.Blue, };
// Apply redact0 with default options: doc.Redact(redact0); // Apply redact1 with CopyImagesOnRedact on: doc.Redact(redact1, new RedactOptions() { CopyImagesOnRedact = true });
// Save the PDF: doc.Save(stream); return doc.Pages.Count; } }}