internal void Handle()

in src-csharp/ArgHandlers/FormsRedactionHandler.cs [15:51]


		internal void Handle(string bucketName, string formFile, string localFolder, string localFile) {
			var task = textractAnalysisService.StartDocumentAnalysis(bucketName, formFile, "FORMS");
			var jobId = task.Result;
			textractAnalysisService.WaitForJobCompletion(jobId);
			var results = textractAnalysisService.GetJobResults(jobId);

			var redactableImage = Path.Join(localFolder, "redacted-" + formFile);
			if(File.Exists(redactableImage))
				File.Delete(redactableImage);
			File.Copy(localFile, redactableImage);
			var image = Image.FromFile(redactableImage);
			var graphics = Graphics.FromImage(image);
			var height = image.Height;
			var width = image.Width;
			Console.WriteLine("image dimensions: {0}x{1}", width, height);

			var document = new TextractDocument(results);
			document.Pages.ForEach(page => {
				page.Form.Fields.ForEach(field => {
					if(field.Key.Text.ToLower().Contains("address")) {
						Console.WriteLine("Redacting Key: {0}, Value: {1}", field.Key.Text, field.Value.Text);
						var bb = field.Value.Geometry.BoundingBox;
						Console.WriteLine(bb);
						var x1 = bb.Left * width;
						var y1 = bb.Top * height - 2;
						var x2 = bb.Width * width + 2;
						var y2 = bb.Height * height + 2;

						Console.WriteLine("x1: {0}, x2: {1}, y1: {2}, y2: {3}", x1, x2, y1, y2);
						graphics.FillRectangle(new SolidBrush(Color.Black), x1, y1, x2, y2);
						graphics.Save();
						image.Save(redactableImage);
						Console.WriteLine("redacted image saved at: {0}", redactableImage);
					}
				});
			});
		}