Result of a successful document conversion.
function lt.Document.DocumentConvertResult
class lt.Document.DocumentConvertResult()
DocumentConvertResult is the result of calling LEADDocument.Convert. Each member is of type ConvertItem which contains the URL and the MIME type and file length of an output conversion file. The values are dependent on whether the output format set in DocumentConverterJobData object passed to Convert supports multipages. If the format supports multipages, then DocumentConvertResult.Archive is not used and the resulting document can be obtained through DocumentConvertResult.Document (and the document ID is stored in DocumentConvertResult.DocumentId. If the format does not support multipage format, then the output files are compressed into a ZIP file and its properties set in Archive. This occurs only if the conversion results in more than one file (if the input document contains more than a single page).
For example, if the user selected a document format using DocumentConverterJobData.DocumentFormat that supports multiple pages, such as DocumentFormat.Pdf or DocumentFormat.Docx, then Archive is not used. Instead, the final document is stored in Document and the user can retrieve this document using Document.Url. The name of the document is DocumentConverterJobData.DocumentName plus the common extension of the output format (for instance, .pdf for PDF files and .docx for DOCX files).
If the user selected a document format that does not support multiple pages, such as SVG, then the archive is used if the conversion results in multiple pages. In this case, the DocumentConverterJobData.PageNumberingTemplate is used to generate the names of each page and the result is compressed into a single ZIP file that is stored in Archive. The user can retrieve this document using Archive.Url. The name of the document will be DocumentConverterJobData.DocumentName plus .zip which is the common extension of ZIP archives. If the conversion results in a single file, then archiving is not used and the result will be similar to the previous case of a multipage capable format conversion.
Similar to document conversion, if the user selected a raster format using DocumentConverterJobData.RasterImageFormat that supports multiple pages, such as RasterImageFormat.Tif or RasterImageImage.RasPdf, then the same rules are used for multipage document files discussed above. If the user selects a format that does not support multiple pages, such as RasterImageFormat.Jpeg or RasterImageFormat.Png, then the rules of single-page formats discussed above are used.
If the user selected to generate an external annotation file (by setting DocumentConverterJobData.AnnotationsMode to DocumentConverterAnnotationsMode.External) or if the output format does not support embedded annotations, then the annotations are saved into a separate file on the server and its properties can be retrieved using Annotations. The engine will use DocumentConverterJobData.DocumentName plus the extension ".xml" as the file name. If DocumentName is null, then the generic "annotations.xml" file name will be used.
After a successful conversion, the user can obtain the URL's result directly from Document.Url,
Archive.Url or Annotation.Url and pass the values to other part of the system that accept a URL
(for example, window.open
) or can call the DocumentFactory.DownloadDocumentData method to download the
document in its entirety or in chunks as a stream of byte array. In either case, the MimeType and Length
properties of each item contains the MIME-type and length of the file in bytes values that can be used when downloading the data.
import { DocumentHelper } from "../../utilities/DocumentHelper";
export class LEADDocument_ConvertExample {
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.convert;
}
/**
* Converts a LEADDocument
*/
convert = () => {
const url = "https://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) => {
DocumentHelper.log("Loaded, converting...");
const jobData = new lt.Document.DocumentConverterJobData();
jobData.documentFormat = lt.Document.Writer.DocumentFormat.docx;
jobData.rasterImageFormat = lt.Document.RasterImageFormat.unknown;
// Set document options
const docxOptions = new lt.Document.Writer.DocxDocumentOptions();
docxOptions.textMode = lt.Document.Writer.DocumentTextMode.auto;
jobData.documentOptions = docxOptions;
document.convert(jobData)
.done((result: any) => {
// This is generic code, we know the result is in "document" since DOCX supports that
// But 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);
}
}
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 LEADDocument_ConvertExample {
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.convert;
}
/**
* Converts a LEADDocument
*/
convert = () => {
const url = "https://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) => {
DocumentHelper.log("Loaded, converting...");
const jobData = new lt.Document.DocumentConverterJobData();
jobData.documentFormat = lt.Document.Writer.DocumentFormat.docx;
jobData.rasterImageFormat = lt.Document.RasterImageFormat.unknown;
// Set document options
const docxOptions = new lt.Document.Writer.DocxDocumentOptions();
docxOptions.textMode = lt.Document.Writer.DocumentTextMode.auto;
jobData.documentOptions = docxOptions;
document.convert(jobData)
.done((result) => {
// This is generic code, we know the result is in "document" since DOCX supports that
// But 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);
}
}
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 | Convert</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.LEADDocument.Convert();
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