Code samples

This guide provides an overview of code samples for redacting sensitive information.

Pattern redaction sample code

The sample code for pattern redaction uses the OpenService and CloseService methods from the DocumentConverterServiceClient sample code:

/// <summary>
/// Perform Smart Redaction on the supplied file, writing the result into the target folder
/// </summary>
/// <param name="ServiceURL">URL endpoint for the PDF Converter service</param>
/// <param name="sourceFileName">Source filename</param>
/// <param name="targetFolder">Target folder to receive the output file</param>
static void SmartRedaction(string ServiceURL, string sourceFileName, string targetFolder)
{
DocumentConverterServiceClient client = null;
try
{
// Create minimum OpenOptions object
OpenOptions openOptions = new OpenOptions();
openOptions.OriginalFileName = Path.GetFileName(sourceFileName);
// Create minimum SmartRedactionSettings
SmartRedactionSettings smartRedactionSettings = new SmartRedactionSettings();
smartRedactionSettings = new SmartRedactionSettings();
// Set what needs to be redacted
smartRedactionSettings.RedactCreditCardNumbers = BooleanEnum.True;
smartRedactionSettings.RedactEmailAddresses = BooleanEnum.True;
smartRedactionSettings.RedactPhoneNumbers = BooleanEnum.True;
// Create target folder if required
if (!Directory.Exists(targetFolder))
{
Directory.CreateDirectory(targetFolder);
}
// ** Read the source file into a byte array.
byte[] sourceFile = File.ReadAllBytes(sourceFileName);
// ** Open the service and configure the bindings
client = OpenService(ServiceURL);
// ** Carry out the conversion.
byte[] result = client.SmartRedaction(sourceFile, openOptions, smartRedactionSettings);
// ** Save the results
if (result != null)
{
if (!Directory.Exists(targetFolder))
{
Directory.CreateDirectory(targetFolder);
}
string filename = Path.GetFileNameWithoutExtension(sourceFileName);
string destinationFileName = Path.GetFullPath(Path.Combine(targetFolder, filename + "-redacted.pdf"));
using (FileStream fs = File.Create(destinationFileName))
{
fs.Write(result, 0, result.Length);
fs.Close();
}
Console.WriteLine("File converted to " + destinationFileName);
}
else
{
Console.WriteLine("Nothing returned");
}
}
catch (FaultException<WebServiceFaultException> ex)
{
Console.WriteLine($"FaultException occurred: ExceptionType: {ex.Detail.ExceptionType.ToString()}");
Console.WriteLine();
Console.WriteLine($"Error Detail: {string.Join(Environment.NewLine, ex.Detail.ExceptionDetails)}");
Console.WriteLine($"Error message: {ex.Message}");
Console.WriteLine();
Console.WriteLine($"Error reason: {ex.Reason}");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
Console.WriteLine(ex.Data.ToString());
}
finally
{
if (client != null)
{
CloseService(client);
}
}
}

Pattern highlighting sample code

Pattern highlighting identifies specific patterns in a document and visually highlights them without removing the underlying content. This example shows how to implement pattern highlighting using the API:

/// <summary>
/// Perform pattern redaction on the supplied file, writing the result into the target folder.
/// </summary>
/// <param name="ServiceURL">URL endpoint for the PDF Converter service.</param>
/// <param name="sourceFileName">Source filename.</param>
/// <param name="targetFolder">Target folder to receive the output file.</param>
static void PatternRedaction(string ServiceURL, string sourceFileName, string targetFolder)
{
DocumentConverterServiceClient client = null;
try
{
// Create minimum `OpenOptions` object.
OpenOptions openOptions = new OpenOptions();
openOptions.OriginalFileName = Path.GetFileName(sourceFileName);
// Create minimum `PatternHighlightSettings`.
PatternHighlightSettings patternHighlightSettings = new PatternHighlightSettings();
// Set the highlight color.
patternHighlightSettings.Red = 0;
patternHighlightSettings.Green = 0;
patternHighlightSettings.Blue = 255;
patternHighlightSettings.Alpha = 255;
patternHighlightSettings.Pattern = "\"374245455400126\"";
// Create target folder if required.
if (!Directory.Exists(targetFolder))
{
Directory.CreateDirectory(targetFolder);
}
// ** Read the source file into a byte array.
byte[] sourceFile = File.ReadAllBytes(sourceFileName);
// ** Open the service and configure the bindings.
client = OpenService(ServiceURL);
// ** Carry out the highlighting.
byte[] result = client.PatternHighlight(sourceFile, openOptions, patternHighlightSettings);
// ** Save the results.
if (result != null)
{
if (!Directory.Exists(targetFolder))
{
Directory.CreateDirectory(targetFolder);
}
string filename = Path.GetFileNameWithoutExtension(sourceFileName);
string destinationFileName = Path.GetFullPath(Path.Combine(targetFolder, filename + "-highlighted.pdf"));
using (FileStream fs = File.Create(destinationFileName))
{
fs.Write(result, 0, result.Length);
fs.Close();
}
Console.WriteLine("File converted to " + destinationFileName);
// Open the destination file.
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = destinationFileName;
psi.UseShellExecute = true;
Process.Start(psi);
}
else
{
Console.WriteLine("Nothing returned");
}
}
catch (FaultException<WebServiceFaultException> ex)
{
Console.WriteLine($"FaultException occurred: ExceptionType: {ex.Detail.ExceptionType.ToString()}");
Console.WriteLine();
Console.WriteLine($"Error Detail: {string.Join(Environment.NewLine, ex.Detail.ExceptionDetails)}");
Console.WriteLine($"Error message: {ex.Message}");
Console.WriteLine();
Console.WriteLine($"Error reason: {ex.Reason}");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
Console.WriteLine(ex.Data.ToString());
}
finally
{
if (client != null)
{
CloseService(client);
}
}
}

Smart redaction sample code

The sample code for smart redaction uses the OpenService and CloseService methods from the DocumentConverterServiceClient sample code:

/// <summary>
/// Perform Smart Redaction on the supplied file, writing the result into the target folder
/// </summary>
/// <param name="ServiceURL">URL endpoint for the PDF Converter service</param>
/// <param name="sourceFileName">Source filename</param>
/// <param name="targetFolder">Target folder to receive the output file</param>
static void SmartRedaction(string ServiceURL, string sourceFileName, string targetFolder)
{
DocumentConverterServiceClient client = null;
try
{
// Create minimum OpenOptions object
OpenOptions openOptions = new OpenOptions();
openOptions.OriginalFileName = Path.GetFileName(sourceFileName);
// Create minimum SmartRedactionSettings
SmartRedactionSettings smartRedactionSettings = new SmartRedactionSettings();
smartRedactionSettings = new SmartRedactionSettings();
// Set what needs to be redacted
smartRedactionSettings.RedactCreditCardNumbers = BooleanEnum.True;
smartRedactionSettings.RedactEmailAddresses = BooleanEnum.True;
smartRedactionSettings.RedactPhoneNumbers = BooleanEnum.True;
// Create target folder if required
if (!Directory.Exists(targetFolder))
{
Directory.CreateDirectory(targetFolder);
}
// ** Read the source file into a byte array.
byte[] sourceFile = File.ReadAllBytes(sourceFileName);
// ** Open the service and configure the bindings
client = OpenService(ServiceURL);
// ** Carry out the conversion.
byte[] result = client.SmartRedaction(sourceFile, openOptions, smartRedactionSettings);
// ** Save the results
if (result != null)
{
if (!Directory.Exists(targetFolder))
{
Directory.CreateDirectory(targetFolder);
}
string filename = Path.GetFileNameWithoutExtension(sourceFileName);
string destinationFileName = Path.GetFullPath(Path.Combine(targetFolder, filename + "-redacted.pdf"));
using (FileStream fs = File.Create(destinationFileName))
{
fs.Write(result, 0, result.Length);
fs.Close();
}
Console.WriteLine("File converted to " + destinationFileName);
}
else
{
Console.WriteLine("Nothing returned");
}
}
catch (FaultException<WebServiceFaultException> ex)
{
Console.WriteLine($"FaultException occurred: ExceptionType: {ex.Detail.ExceptionType.ToString()}");
Console.WriteLine();
Console.WriteLine($"Error Detail: {string.Join(Environment.NewLine, ex.Detail.ExceptionDetails)}");
Console.WriteLine($"Error message: {ex.Message}");
Console.WriteLine();
Console.WriteLine($"Error reason: {ex.Reason}");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
Console.WriteLine(ex.Data.ToString());
}
finally
{
if (client != null)
{
CloseService(client);
}
}
}