Saves the document to the cache.
saveToCache = function(doc)
static saveToCache(doc: LEADDocument): JQueryPromise<void>;
doc
The document to save. Must not be null.
A Promise object that may resolve successfully to a LEADDocument object, or fail if the LEADDocument cannot be saved to the cache.
<returns> A Promise object that may resolve successfully to a LEADDocument object, or fail if the LEADDocument cannot be saved to the cache. </returns>
Documents can contain large number of pages and huge amount of data. Storing all this data in the physical memory is not feasible in most situations. Therefore, the LEADDocument class was designed to use an external caching system to store the modified.
SaveToCache can be used to save a document to the cache and re-loading it using DocumentFactory.LoadFromCache.
The document is only saved into the cache if the value of CacheStatus is DocumentCacheStatus.NotSynced. When SaveToCache returns successfully, the value of CacheStatus of the document will be DocumentCacheStatus.Synced and the value of LastCacheSyncTime will contain the timestamp of the operation.
Refer to Document Toolkit and Caching for more information.
import { DocumentHelper } from "../../utilities/DocumentHelper";export class DocumentFactory_CreateExample {public constructor() {lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null);DocumentHelper.initFactory();}private urls = ["https://demo.leadtools.com/images/pdf/leadtools.pdf","https://demo.leadtools.com/images/tiff/barcodes.tif"];private childDocs = [];private childDocCount = this.urls.length;private processedCount = 0;private loadedCount = 0;public run = (buttonID: string) => {const exampleButton = document.getElementById(buttonID);exampleButton.onclick = this.loadDocument;}loadDocument = () => {// Load this oneconst index = this.processedCount;const loadOptions = new lt.Document.LoadDocumentOptions();DocumentHelper.log("Loading " + this.urls[index]);lt.Document.DocumentFactory.loadFromUri(this.urls[index], loadOptions).done((childDoc) => {// Finished, save the document and load nextthis.loadedCount++;this.childDocs.push(childDoc);}).fail(DocumentHelper.showServiceError).always(() => {this.processedCount++;if (this.processedCount >= this.childDocCount) {// All children loaded, if we did not have an error continue with the exampleif (this.loadedCount === this.processedCount) {DocumentHelper.log("All documents loaded", this.childDocs);this.createDocument();}}else {this.loadDocument();}});}logDocument = (doc) => DocumentHelper.log("Name: " + doc.name + " Pages: " + doc.pages.count + " Documents: " + doc.documents.count, doc);createDocument = () => {// Create a new documentconst createOptions = new lt.Document.CreateDocumentOptions();const doc = lt.Document.DocumentFactory.create(createOptions);doc.name = "Virtual";// Should have 0 pages and documentsthis.logDocument(doc);// Add page 2 and 3 from the first child document (PDF)let childDoc = this.childDocs[0];doc.pages.add(childDoc.pages.item(2));doc.pages.add(childDoc.pages.item(3));// Add an empty page (8.5 by 11 inches at 300 DPI)const docPage = doc.pages.createPage(lt.LeadSizeD.create(lt.Document.LEADDocument.unitsPerInch * 8.5, lt.Document.LEADDocument.unitsPerInch * 11), 300);doc.pages.add(docPage);// Add page 1 from the second child document (TIFF)childDoc = this.childDocs[1];doc.pages.add(childDoc.pages.item(0));// Should have 4 pages and 2 documents (the PDF and the TIFF)DocumentHelper.log("Pages added");this.logDocument(doc);// Save the ID so we can load itconst documentId = doc.documentId;// Now save this 'parent' document into the cachelt.Document.DocumentFactory.saveToCache(doc).done(() => {DocumentHelper.log("Document saved to cache at " + documentId)// Tell this document to dispose all childrendoc.autoDisposeDocuments = true;// And dispose itdoc.dispose();// Now, re-load this document from the cachelt.Document.DocumentFactory.loadFromCache(documentId).done((doc) => {// Should have 5 pages and 2 documents (the PDF and the TIFF)DocumentHelper.log("Document loaded from cache");this.logDocument(doc);// Delete first pagedoc.pages.removeAt(0);// Delete the last pagedoc.pages.removeAt(doc.pages.count - 1);// Should have 3 pages and 1 document (the PDF only)DocumentHelper.log("After removing first and last pages...");this.logDocument(doc);// Delete this document from the cache// Note: This does not delete the 'children' from the cachelt.Document.DocumentFactory.deleteFromCache(documentId);}).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);elseconsole.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 DocumentFactory_CreateExample {constructor() {lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null);DocumentHelper.initFactory();}urls = ["https://demo.leadtools.com/images/pdf/leadtools.pdf","https://demo.leadtools.com/images/tiff/barcodes.tif"];childDocs = [];childDocCount = this.urls.length;processedCount = 0;loadedCount = 0;run = (buttonID) => {const exampleButton = document.getElementById(buttonID);exampleButton.onclick = this.loadDocument;}loadDocument = () => {// Load this oneconst index = this.processedCount;const loadOptions = new lt.Document.LoadDocumentOptions();DocumentHelper.log("Loading " + this.urls[index]);lt.Document.DocumentFactory.loadFromUri(this.urls[index], loadOptions).done((childDoc) => {// Finished, save the document and load nextthis.loadedCount++;this.childDocs.push(childDoc);}).fail(DocumentHelper.showServiceError).always(() => {this.processedCount++;if (this.processedCount >= this.childDocCount) {// All children loaded, if we did not have an error continue with the exampleif (this.loadedCount === this.processedCount) {DocumentHelper.log("All documents loaded", this.childDocs);this.createDocument();}}else {this.loadDocument();}});}logDocument = (doc) => DocumentHelper.log("Name: " + doc.name + " Pages: " + doc.pages.count + " Documents: " + doc.documents.count, doc);createDocument = () => {// Create a new documentconst createOptions = new lt.Document.CreateDocumentOptions();const doc = lt.Document.DocumentFactory.create(createOptions);doc.name = "Virtual";// Should have 0 pages and documentsthis.logDocument(doc);// Add page 2 and 3 from the first child document (PDF)let childDoc = this.childDocs[0];doc.pages.add(childDoc.pages.item(2));doc.pages.add(childDoc.pages.item(3));// Add an empty page (8.5 by 11 inches at 300 DPI)const docPage = doc.pages.createPage(lt.LeadSizeD.create(lt.Document.LEADDocument.unitsPerInch * 8.5, lt.Document.LEADDocument.unitsPerInch * 11), 300);doc.pages.add(docPage);// Add page 1 from the second child document (TIFF)childDoc = this.childDocs[1];doc.pages.add(childDoc.pages.item(0));// Should have 4 pages and 2 documents (the PDF and the TIFF)DocumentHelper.log("Pages added");this.logDocument(doc);// Save the ID so we can load itconst documentId = doc.documentId;// Now save this 'parent' document into the cachelt.Document.DocumentFactory.saveToCache(doc).done(() => {DocumentHelper.log("Document saved to cache at " + documentId)// Tell this document to dispose all childrendoc.autoDisposeDocuments = true;// And dispose itdoc.dispose();// Now, re-load this document from the cachelt.Document.DocumentFactory.loadFromCache(documentId).done((doc) => {// Should have 5 pages and 2 documents (the PDF and the TIFF)DocumentHelper.log("Document loaded from cache");this.logDocument(doc);// Delete first pagedoc.pages.removeAt(0);// Delete the last pagedoc.pages.removeAt(doc.pages.count - 1);// Should have 3 pages and 1 document (the PDF only)DocumentHelper.log("After removing first and last pages...");this.logDocument(doc);// Delete this document from the cache// Note: This does not delete the 'children' from the cachelt.Document.DocumentFactory.deleteFromCache(documentId);}).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);elseconsole.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 | Create</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.DocumentFactory.Create();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
