RedactArea.cs
//
// This code is part of Document Solutions for PDF demos.
// Copyright (c) MESCIUS inc. All rights reserved.
//
using System.IO;
using System.Drawing;
using System.Text.RegularExpressions;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Pdf.Annotations;
using GrapeCity.Documents.Pdf.TextMap;
using GrapeCity.Documents.Pdf.AcroForms;

namespace DsPdfWeb.Demos
{
    // This sample demonstrates the use of GcPdfDocument.Redact() method.
    // It loads the PDF generated by the SlidePages sample, creates
    // a redact annotation on the first page, and applies it.
    public class RedactArea
    {
        public int CreatePDF(Stream stream)
        {
            var doc = new GcPdfDocument();
            using (var fs = File.OpenRead(Path.Combine("Resources", "PDFs", "SlidePages.pdf")))
            {
                // Load the PDF containing redact annotations (areas marked for redaction):
                doc.Load(fs);

                var rc = new RectangleF(16, 16, 280, 300);

                var redact = new RedactAnnotation()
                {
                    Rect = rc,
                    Page = doc.Pages[0],
                    OverlayText = "This content has been redacted.",
                    OverlayFillColor = Color.PaleGoldenrod
                };

                // Apply the redact:
                doc.Redact(redact);

                // doc.Pages[0].Graphics.DrawRectangle(rc, Color.Red);

                // Done:
                doc.Save(stream);
                return doc.Pages.Count;
            }
        }
    }
}