RedactCopyImages.cs
- //
- // This code is part of Document Solutions for PDF demos.
- // Copyright (c) MESCIUS inc. All rights reserved.
- //
- using System;
- using System.IO;
- using System.Drawing;
- using GrapeCity.Documents.Pdf;
- using GrapeCity.Documents.Text;
- 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;
- }
- }
- }
-