Annotations redaction mode.
public enum DocumentRedactionMode
public:
enum class DocumentRedactionMode sealed
class DocumentRedactionMode(Enum):
None = 0
Apply = 1
ApplyThenRasterize = 2
Value | Member | Description |
---|---|---|
0 | None | Do not apply any annotations. Default behavior. All annotations are visible and live during viewing or converting. |
1 | Apply | Apply the annotations and keep SVG pages. |
2 | ApplyThenRasterize | Apply the annotations and rasterize SVG pages. |
For more information, refer to Document View and Convert Redaction.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Document.Writer;
using Leadtools.Document;
using Leadtools.Caching;
using Leadtools.Annotations.Engine;
using Leadtools.Ocr;
using Leadtools.Barcode;
using Leadtools.Document.Converter;
public void DocumentRedactionExample()
{
// AnnotationsRedactionOptions redactionOptions = new AnnotationsRedactionOptions();
var cache = new FileCache();
cache.CacheDirectory = @"c:\cache-dir";
using (var documentConverter = new DocumentConverter())
{
// Load a PDF filed
var loadDocumentOptions = new LoadDocumentOptions();
loadDocumentOptions.Cache = cache;
using (LEADDocument document = DocumentFactory.LoadFromUri(new Uri("http://demo.leadtools.com/images/pdf/leadtools.pdf"), loadDocumentOptions))
{
// Convert to PDF using default options
string outFileName = Path.Combine(LEAD_VARS.ImagesDir, "no-redaction.pdf");
DocumentRedactConvert(documentConverter, document, DocumentFormat.Pdf, outFileName);
// Open the converted document no-redaction.pdf, notice that it resembles the original document
// We will use DocumentPageText to dynamically find the location of all words containing "leadtools"
document.IsReadOnly = false;
const string toRedact = "leadtools";
DocumentPage documentPage = document.Pages[0];
DocumentPageText pageText = documentPage.GetText();
pageText.BuildWords();
AnnContainer container = documentPage.GetAnnotations(true);
foreach (DocumentWord word in pageText.Words)
{
// Find if the word is ours
if (word.Value.Contains(toRedact))
{
// Yes, redact it
var annRedactionObject = new AnnRedactionObject();
annRedactionObject.Rect = word.Bounds;
container.Children.Add(annRedactionObject);
}
}
// Set the container into the page
documentPage.SetAnnotations(container);
// Set the redaction options
// AnnotationRedactionOptions & ConvertRedactionOptions reference
document.Annotations.RedactionOptions = new DocumentRedactionOptions();
// ViewRedactionOptions & AnnotationsRedactionOptions reference
document.Annotations.RedactionOptions.ViewOptions.Mode = DocumentRedactionMode.Apply;
document.Annotations.RedactionOptions.ViewOptions.ReplaceCharacter = '*';
document.Annotations.RedactionOptions.ConvertOptions.Mode = DocumentRedactionMode.Apply;
document.Annotations.RedactionOptions.ConvertOptions.ReplaceCharacter = '*';
document.IsReadOnly = true;
// Convert again, the result should have all instance of "leadtools" in the first page and replaced with *
outFileName = Path.Combine(LEAD_VARS.ImagesDir, "redacted.pdf");
DocumentRedactConvert(documentConverter, document, DocumentFormat.Pdf, outFileName);
}
}
}
private static void DocumentRedactConvert(DocumentConverter documentConverter, LEADDocument document, DocumentFormat documentFormat, string outFileName)
{
var jobData = new DocumentConverterJobData();
jobData.Document = document;
jobData.DocumentFormat = documentFormat;
jobData.RasterImageFormat = RasterImageFormat.Unknown;
jobData.OutputDocumentFileName = outFileName;
DocumentConverterJob job = documentConverter.Jobs.CreateJob(jobData);
documentConverter.Jobs.RunJob(job);
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document