Options to use when applying the redactions to a LEADDocument.
function lt.Document.DocumentRedactionOptions
class lt.Document.DocumentRedactionOptions()
DocumentRedactionOptions contains the following members:
Member | Description |
---|---|
viewOptions | The options to use when applying redactions during viewing. |
convertOptions | The options to use when applying redactions during conversion. |
For more information, refer to Document View and Convert Redaction.
import { DocumentHelper } from "../../utilities/DocumentHelper";
export class DocumentAnnotations_RedactionOptionsExample {
public constructor() {
lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null);
DocumentHelper.initFactory();
}
public run = (buttonID: string) => {
const exampleButton = document.getElementById(buttonID);
exampleButton.onclick = this.convertRedact;
}
convertRedact = () => {
const url = "http://demo.leadtools.com/images/pdf/leadtools.pdf";
const loadDocumentOptions = new lt.Document.LoadDocumentOptions();
DocumentHelper.log("Loading document...");
lt.Document.DocumentFactory.loadFromUri(url, loadDocumentOptions)
.done((document: lt.Document.LEADDocument) => {
document.isReadOnly = false;
const toRedact = "leadtools";
const documentPage = document.pages.item(0);
documentPage.getText(lt.LeadRectD.empty)
.done((pageText: lt.Document.DocumentPageText) => {
DocumentHelper.log("Page Text retrieved");
documentPage.getAnnotations(true)
.done((container) => {
DocumentHelper.log("Annotations retrieved");
pageText.buildWords();
DocumentHelper.log("Redacting all instances of: " + toRedact);
pageText.words.forEach((word) => {
if (word.value.indexOf(toRedact) !== -1) {
const annRedactObject = new lt.Annotations.Engine.AnnRedactionObject();
annRedactObject.rect = word.bounds;
container.children.add(annRedactObject);
}
});
documentPage.setAnnotations(container)
.done(() => {
DocumentHelper.log("Annotations set.");
document.annotations.redactionOptions = new lt.Document.DocumentRedactionOptions();
document.annotations.redactionOptions.viewOptions.mode = lt.Document.DocumentRedactionMode.apply;
document.annotations.redactionOptions.viewOptions.replaceCharacter = '*';
document.annotations.redactionOptions.convertOptions.mode = lt.Document.DocumentRedactionMode.apply;
document.annotations.redactionOptions.convertOptions.replaceCharacter = '*';
document.isReadOnly = true;
DocumentHelper.log("Convert to pdf.");
const jobData = new lt.Document.DocumentConverterJobData();
jobData.documentFormat = lt.Document.Writer.DocumentFormat.pdf;
jobData.rasterImageFormat = lt.Document.RasterImageFormat.unknown;
document.convert(jobData)
.done((result: any) => {
// This is generic code-- this code checks if the results have been archived into a ZIP file if this
// example was converting to, say SVG
const resultDocument = result.document != null ? result.document.url : result.archive.url;
const link = window.document.createElement("a");
const url = lt.Document.DocumentFactory.serviceUri + "/" + resultDocument;
link.href = url;
link.innerHTML = url;
link.target = "_default";
DocumentHelper.log("Converted: " + url, url);
})
})
.fail(DocumentHelper.showServiceError);
})
.fail(DocumentHelper.showServiceError);
})
.fail(DocumentHelper.showServiceError);
})
.fail(DocumentHelper.showServiceError);
}
}
export class DocumentHelper {
static showServiceError = (jqXHR, statusText, errorThrown) => {
alert("Error returned from service. See the console for details.");
const serviceError = lt.Document.ServiceError.parseError(jqXHR, statusText, errorThrown);
console.error(serviceError);
}
static log = (message: string, data?: any) => {
const outputElement = document.getElementById("output");
if (outputElement) {
const time = (new Date()).toLocaleTimeString();
const textElement = document.createElement("p");
textElement.innerHTML = (outputElement.childElementCount + 1) + " [" + time + "]: " + message;
outputElement.insertBefore(textElement, outputElement.firstChild);
}
if (!data)
console.log(message);
else
console.log(message, data);
}
static initFactory = () => {
// To communicate with the DocumentsService, it must be running!
// Change these parameters to match the path to the service.
lt.Document.DocumentFactory.serviceHost = "http://localhost:40000";
lt.Document.DocumentFactory.servicePath = "";
lt.Document.DocumentFactory.serviceApiPath = "api";
}
}
import { DocumentHelper } from "../../utilities/DocumentHelper";
export class DocumentAnnotations_RedactionOptionsExample {
constructor() {
lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null);
DocumentHelper.initFactory();
}
run = (buttonID) => {
const exampleButton = document.getElementById(buttonID);
exampleButton.onclick = this.convertRedact;
}
convertRedact = () => {
const url = "http://demo.leadtools.com/images/pdf/leadtools.pdf";
const loadDocumentOptions = new lt.Document.LoadDocumentOptions();
DocumentHelper.log("Loading document...");
lt.Document.DocumentFactory.loadFromUri(url, loadDocumentOptions)
.done((document) => {
document.isReadOnly = false;
const toRedact = "leadtools";
const documentPage = document.pages.item(0);
documentPage.getText(lt.LeadRectD.empty)
.done((pageText) => {
DocumentHelper.log("Page Text retrieved");
documentPage.getAnnotations(true)
.done((container) => {
DocumentHelper.log("Annotations retrieved");
pageText.buildWords();
DocumentHelper.log("Redacting all instances of: " + toRedact);
pageText.words.forEach((word) => {
if (word.value.indexOf(toRedact) !== -1) {
const annRedactObject = new lt.Annotations.Engine.AnnRedactionObject();
annRedactObject.rect = word.bounds;
container.children.add(annRedactObject);
}
});
documentPage.setAnnotations(container)
.done(() => {
DocumentHelper.log("Annotations set.");
document.annotations.redactionOptions = new lt.Document.DocumentRedactionOptions();
document.annotations.redactionOptions.viewOptions.mode = lt.Document.DocumentRedactionMode.apply;
document.annotations.redactionOptions.viewOptions.replaceCharacter = '*';
document.annotations.redactionOptions.convertOptions.mode = lt.Document.DocumentRedactionMode.apply;
document.annotations.redactionOptions.convertOptions.replaceCharacter = '*';
document.isReadOnly = true;
DocumentHelper.log("Convert to pdf.");
const jobData = new lt.Document.DocumentConverterJobData();
jobData.documentFormat = lt.Document.Writer.DocumentFormat.pdf;
jobData.rasterImageFormat = lt.Document.RasterImageFormat.unknown;
document.convert(jobData)
.done((result) => {
// This is generic code-- this code checks if the results have been archived into a ZIP file if this
// example was converting to, say SVG
const resultDocument = result.document != null ? result.document.url : result.archive.url;
const link = window.document.createElement("a");
const url = lt.Document.DocumentFactory.serviceUri + "/" + resultDocument;
link.href = url;
link.innerHTML = url;
link.target = "_default";
DocumentHelper.log("Converted: " + url, url);
})
})
.fail(DocumentHelper.showServiceError);
})
.fail(DocumentHelper.showServiceError);
})
.fail(DocumentHelper.showServiceError);
})
.fail(DocumentHelper.showServiceError);
}
}
export class DocumentHelper {
static showServiceError = (jqXHR, statusText, errorThrown) => {
alert("Error returned from service. See the console for details.");
const serviceError = lt.Document.ServiceError.parseError(jqXHR, statusText, errorThrown);
console.error(serviceError);
}
static log = (message, data) => {
const outputElement = document.getElementById("output");
if (outputElement) {
const time = (new Date()).toLocaleTimeString();
const textElement = document.createElement("p");
textElement.innerHTML = (outputElement.childElementCount + 1) + " [" + time + "]: " + message;
outputElement.insertBefore(textElement, outputElement.firstChild);
}
if (!data)
console.log(message);
else
console.log(message, data);
}
static initFactory = () => {
// To communicate with the DocumentsService, it must be running!
// Change these parameters to match the path to the service.
lt.Document.DocumentFactory.serviceHost = "http://localhost:40000";
lt.Document.DocumentFactory.servicePath = "";
lt.Document.DocumentFactory.serviceApiPath = "api";
}
}
<!doctype html>
<html lang="en">
<title>Document Example | RedactionOptions</title>
<head>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script src="../../LT/Leadtools.js"></script>
<script src="../../LT/Leadtools.Controls.js"></script>
<script src="../../LT/Leadtools.Annotations.Engine.js"></script>
<script src="../../LT/Leadtools.Annotations.Designers.js"></script>
<script src="../../LT/Leadtools.Annotations.Rendering.Javascript.js"></script>
<script src="../../LT/Leadtools.Annotations.Automation.js"></script>
<script src="../../LT/Leadtools.ImageProcessing.Main.js"></script>
<script src="../../LT/Leadtools.ImageProcessing.Color.js"></script>
<script src="../../LT/Leadtools.ImageProcessing.Core.js"></script>
<script src="../../LT/Leadtools.ImageProcessing.Effects.js"></script>
<script src="../../LT/Leadtools.Document.js"></script>
<script src="../../LT/Leadtools.Document.Viewer.js"></script>
<link rel="stylesheet" type="text/css" href="../../css/examples.css">
<!-- All demo files are bundled and appended to the window -->
<script src="../../bundle.js" type="text/javascript"></script>
</head>
<body>
<div>
<button type="button" id="exampleButton">Run Example</button>
</div>
<div id="output"></div>
<div>
<img id="img" />
</div>
</body>
<script>
window.onload = () => {
const example = new window.examples.DocumentAnnotations.RedactOptions();
example.run("exampleButton");
};
</script>
</html>
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