This example will convert a TIFF document to PDF.
import { DocumentHelper } from "../../utilities/DocumentHelper";
export class StatusJobDataRunner_Example {
private el: HTMLElement;
public constructor() {
lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/v200/LEADTOOLSEVAL.txt", "EVAL", null);
DocumentHelper.initFactory();
}
public run(buttonID: string) {
document.getElementById(buttonID).onclick = this.convert;
}
convert = () => {
// We will be converting this TIFF file to PDF
const imageUrl = "https://demo.leadtools.com/images/tiff/ocr.tif";
const loadDocumentOptions = new lt.Document.LoadDocumentOptions();
DocumentHelper.log("Loading document...");
// Load the source document and save it to the cache
lt.Document.DocumentFactory.loadFromUri(imageUrl, loadDocumentOptions)
.done((doc) => {
DocumentHelper.log("Saving document to cache...");
lt.Document.DocumentFactory.saveToCache(doc)
.done(() => {
let userToken = null;
let jobToken = null;
let minWaitFromResponse = 2000;
let minWaitFromRequest = 3000;
let requestTime = -1;
let responseTime = -1;
let runQuery = null;
// Document is the cache, create the job data and set its options
const jobData = new lt.Document.DocumentConverterJobData();
jobData.documentFormat = lt.Document.Writer.DocumentFormat.pdf;
// Convert
const convertJobPromise = lt.Document.Converter.StatusJobDataRunner.runConvertJob(doc.documentId, jobData)
.done((convertJobResult) => {
// convertJobResult is of type lt.Document.Converter.StatusJobDataRunner.RunConvertJobResult
// Get the user and job token
userToken = convertJobResult.userToken;
jobToken = convertJobResult.jobToken;
// Create the function to call when the job is done
const queryDone = (statusJobData) => {
// statusJobData is of type lt.Document.Converter.StatusJobData
// Check for errors
if (statusJobData.errorMessages && statusJobData.errorMessages.length) {
const messages = [
"The conversion job encountered an error:",
statusJobData.errorMessages[0],
"Check the console for more information."
];
alert(messages.join("\n"));
return;
}
else if (statusJobData.isCompleted) {
// Completed successfully
// Delete the job
lt.Document.Converter.StatusJobDataRunner.deleteConvertJob(userToken, jobToken)
.always(() => {
// Success, load the document
DocumentHelper.log("Finished loading result document...");
lt.Document.DocumentFactory.loadFromUri(statusJobData.outputDocumentUri, loadDocumentOptions)
.done((resultDoc) => {
const resultDocument = resultDoc.cacheUri;
const link = document.createElement("a");
const url = resultDocument;
link.href = url;
link.innerHTML = url;
link.target = "_default";
DocumentHelper.log("Converted: " + url, url);
})
.fail(DocumentHelper.showServiceError);
});
return;
}
DocumentHelper.log("Converting " + statusJobData.jobStatusMessage + "...");
// Keep querying
runQuery(Date.now());
};
runQuery = (responseTime) => {
const now = Date.now();
if (requestTime !== -1) {
const timeSinceRequest = now - requestTime;
const timeSinceResponse = now - responseTime;
// If we haven't waited the minimum since the response and haven't waited the maximum since the request, wait
if (timeSinceResponse < minWaitFromResponse || timeSinceRequest < minWaitFromRequest) {
const waitTime = Math.max(minWaitFromResponse - timeSinceResponse, minWaitFromRequest - timeSinceRequest);
window.setTimeout(() => {
runQuery(responseTime);
}, waitTime);
return;
}
}
lt.Document.Converter.StatusJobDataRunner.queryConvertJobStatus(userToken, jobToken)
.done(queryDone)
.fail(DocumentHelper.showServiceError);
requestTime = Date.now();
return;
}
runQuery(Date.now());
})
.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 StatusJobDataRunner_Example {
el;
constructor() {
lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/v200/LEADTOOLSEVAL.txt", "EVAL", null);
DocumentHelper.initFactory();
}
run(buttonID) {
document.getElementById(buttonID).onclick = this.convert;
}
convert = () => {
// We will be converting this TIFF file to PDF
const imageUrl = "https://demo.leadtools.com/images/tiff/ocr.tif";
const loadDocumentOptions = new lt.Document.LoadDocumentOptions();
DocumentHelper.log("Loading document...");
// Load the source document and save it to the cache
lt.Document.DocumentFactory.loadFromUri(imageUrl, loadDocumentOptions)
.done((doc) => {
DocumentHelper.log("Saving document to cache...");
lt.Document.DocumentFactory.saveToCache(doc)
.done(() => {
let userToken = null;
let jobToken = null;
let minWaitFromResponse = 2000;
let minWaitFromRequest = 3000;
let requestTime = -1;
let responseTime = -1;
let runQuery = null;
// Document is the cache, create the job data and set its options
const jobData = new lt.Document.DocumentConverterJobData();
jobData.documentFormat = lt.Document.Writer.DocumentFormat.pdf;
// Convert
const convertJobPromise = lt.Document.Converter.StatusJobDataRunner.runConvertJob(doc.documentId, jobData)
.done((convertJobResult) => {
// convertJobResult is of type lt.Document.Converter.StatusJobDataRunner.RunConvertJobResult
// Get the user and job token
userToken = convertJobResult.userToken;
jobToken = convertJobResult.jobToken;
// Create the function to call when the job is done
const queryDone = (statusJobData) => {
// statusJobData is of type lt.Document.Converter.StatusJobData
// Check for errors
if (statusJobData.errorMessages && statusJobData.errorMessages.length) {
const messages = [
"The conversion job encountered an error:",
statusJobData.errorMessages[0],
"Check the console for more information."
];
alert(messages.join("\n"));
return;
}
else if (statusJobData.isCompleted) {
// Completed successfully
// Delete the job
lt.Document.Converter.StatusJobDataRunner.deleteConvertJob(userToken, jobToken)
.always(() => {
// Success, load the document
DocumentHelper.log("Finished loading result document...");
lt.Document.DocumentFactory.loadFromUri(statusJobData.outputDocumentUri, loadDocumentOptions)
.done((resultDoc) => {
const resultDocument = resultDoc.cacheUri;
const link = document.createElement("a");
const url = resultDocument;
link.href = url;
link.innerHTML = url;
link.target = "_default";
DocumentHelper.log("Converted: " + url, url);
})
.fail(DocumentHelper.showServiceError);
});
return;
}
DocumentHelper.log("Converting " + statusJobData.jobStatusMessage + "...");
// Keep querying
runQuery(Date.now());
};
runQuery = (responseTime) => {
const now = Date.now();
if (requestTime !== -1) {
const timeSinceRequest = now - requestTime;
const timeSinceResponse = now - responseTime;
// If we haven't waited the minimum since the response and haven't waited the maximum since the request, wait
if (timeSinceResponse < minWaitFromResponse || timeSinceRequest < minWaitFromRequest) {
const waitTime = Math.max(minWaitFromResponse - timeSinceResponse, minWaitFromRequest - timeSinceRequest);
window.setTimeout(() => {
runQuery(responseTime);
}, waitTime);
return;
}
}
lt.Document.Converter.StatusJobDataRunner.queryConvertJobStatus(userToken, jobToken)
.done(queryDone)
.fail(DocumentHelper.showServiceError);
requestTime = Date.now();
return;
}
runQuery(Date.now());
})
.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 | StatusJobDataRunner</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.StatusJobDataRunner();
example.run("exampleButton");
};
</script>
</html>