Clones this document in the specified cache.
public LEADDocument Clone(ObjectCache cache,CloneDocumentOptions options)
cache
Destination cache. This value cannot be null.
options
Options to use when cloning the document. This value cannot be null.
A brand new document that is an exact copy of this LEADDocument.
This method creates a brand new document that is an exact copy of this object and stores it in the cache. A copy of all the document properties and data is created and the resulting object is independent of this document. In other words, the user can delete this LEADDocument after Clone returns and the resulting document returned by the method will be 100% functional.
Clone creates a new document in targetCache and the user can get the cache of the current document using GetCache to clone the document in the same cache. The policy set in CloneDocumentOptions.CachePolicy is used for the items of the newly created document or uses a default policy if the value is null.
The newly created document will use the ID set in CloneDocumentOptions.DocumentId. If this value is null, then the document will use DocumentFactory.NewCacheId to obtain a brand new unique document ID and use it instead. The ID is set in the DocumentId value of the new document.
This example loads a document into the cache and then clones it.
using Leadtools;using Leadtools.Codecs;using Leadtools.Document.Writer;using Leadtools.Document;using Leadtools.Caching;using Leadtools.Annotations.Engine;using Leadtools.Ocr;using Leadtools.Barcode;using Leadtools.Document.Converter;public void CloneDocumentExample(){var documentUri = new Uri("https://demo.leadtools.com/images/pdf/leadtools.pdf");// Setup a cacheFileCache cache = new FileCache();cache.CacheDirectory = @"c:\cache-dir";string documentId1;string documentId2;// Load a document into the cachevar loadDocumentOptions = new LoadDocumentOptions();loadDocumentOptions.Cache = cache;using (var document1 = DocumentFactory.LoadFromUri(documentUri, loadDocumentOptions)){// Get its document ID and save itdocumentId1 = document1.DocumentId;document1.AutoDeleteFromCache = false;document1.AutoSaveToCache = false;document1.SaveToCache();// Clone it into the same cachevar cloneDocumentOptions = new CloneDocumentOptions();Console.WriteLine("Cache Policy: {0}", cloneDocumentOptions.CachePolicy.AbsoluteExpiration);using (var document2 = document1.Clone(cache, cloneDocumentOptions)){// Get its document ID and save itdocumentId2 = document2.DocumentId;document2.AutoDeleteFromCache = false;document2.AutoSaveToCache = false;document2.SaveToCache();}using (var document3 = DocumentFactory.CloneDocument(cache, documentId1, cloneDocumentOptions)){// Get its document ID and save itdocumentId1 = document3.DocumentId;document3.AutoDeleteFromCache = false;document3.AutoSaveToCache = false;document3.SaveToCache();}}// Ensure both documents are in the cacheDocumentCacheInfo cacheInfo;cacheInfo = DocumentFactory.GetDocumentCacheInfo(cache, documentId1);Debug.Assert(cacheInfo != null);cacheInfo = DocumentFactory.GetDocumentCacheInfo(cache, documentId2);Debug.Assert(cacheInfo != null);// Now delete the first documentvar deleteFromCacheOptions = new LoadFromCacheOptions();deleteFromCacheOptions.Cache = cache;deleteFromCacheOptions.DocumentId = documentId1;DocumentFactory.DeleteFromCache(deleteFromCacheOptions);cacheInfo = DocumentFactory.GetDocumentCacheInfo(cache, documentId1);Debug.Assert(cacheInfo == null);// Or by loading it from the cache, it should be nullvar loadFromCacheOptions = new LoadFromCacheOptions();loadFromCacheOptions.Cache = cache;loadFromCacheOptions.DocumentId = documentId1;using (var document1 = DocumentFactory.LoadFromCache(loadFromCacheOptions)){Debug.Assert(document1 == null);}// And ensure that the cloned document is still usable by loading itloadFromCacheOptions = new LoadFromCacheOptions();loadFromCacheOptions.Cache = cache;loadFromCacheOptions.DocumentId = documentId2;using (var document2 = DocumentFactory.LoadFromCache(loadFromCacheOptions)){Debug.Assert(document2 != null);}// We are done, delete itdeleteFromCacheOptions = new LoadFromCacheOptions();deleteFromCacheOptions.Cache = cache;deleteFromCacheOptions.DocumentId = documentId2;DocumentFactory.DeleteFromCache(deleteFromCacheOptions);}