←Select platform

Length Property

Summary

Maximum number of bytes to read during this download operation.

Syntax
C#
C++/CLI
Python
public long Length {get; set;} 
public:  
   property Int64 Length 
   { 
      Int64 get() 
      void set(Int64 value) 
   } 
Length # get and set (DownloadDocumentOptions) 

Property Value

Maximum number of bytes to read during this download operation. The default value is 0.

Remarks

DocumentFactory.DownloadDocument returns the total number of bytes read into Data or Stream. This value can be less than the number of bytes requested by Length, if that many bytes are not currently available, or zero (0) if the end of the data has been reached.

If this value is -1, then the remaining data will be read until the end is reached.

Example
C#
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 DownloadDocumentExample() 
{ 
   var documentUri = new Uri("https://demo.leadtools.com/images/pdf/leadtools.pdf"); 
   string documentFile1 = Path.Combine(LEAD_VARS.ImagesDir, "downloaded1.pdf"); 
   string documentFile2 = Path.Combine(LEAD_VARS.ImagesDir, "downloaded2.pdf"); 
 
   // Setup a cache 
   FileCache cache = new FileCache(); 
   cache.CacheDirectory = @"c:\cache-dir"; 
 
   string documentId; 
 
   // Load a document into the cache 
   var loadDocumentOptions = new LoadDocumentOptions(); 
   loadDocumentOptions.Cache = cache; 
   using (var document = DocumentFactory.LoadFromUri(documentUri, loadDocumentOptions)) 
   { 
      // Get its document ID and save it 
      documentId = document.DocumentId; 
      document.AutoDeleteFromCache = false; 
      document.AutoSaveToCache = false; 
      document.SaveToCache(); 
   } 
 
   // Now download it all at once into a memory stream 
   var downloadDocumentOptions = new DownloadDocumentOptions(); 
   downloadDocumentOptions.Cache = cache; 
   downloadDocumentOptions.DocumentId = documentId; 
   downloadDocumentOptions.Offset = 0; 
   downloadDocumentOptions.Length = -1; 
   using (var stream = new MemoryStream()) 
   { 
      downloadDocumentOptions.Stream = stream; 
      long bytes = DocumentFactory.DownloadDocument(downloadDocumentOptions); 
      Console.WriteLine("Downloaded {0} bytes into the stream", bytes); 
 
      long annotations = DocumentFactory.DownloadAnnotations(downloadDocumentOptions); 
      Console.WriteLine(annotations + " annotations downloaded"); 
 
      // The following method is obsolete. Use DownloadAnnotations(DownloadDocumentOptions) instead 
      int annotations2 = DocumentFactory.DownloadAnnotations(downloadDocumentOptions.Cache, downloadDocumentOptions.DocumentId, downloadDocumentOptions.Offset, (int)bytes, stream); 
      Console.WriteLine(annotations2 + " annotations downloaded"); 
 
      // Save the stream to a file and show it 
      using (var output = File.Create(documentFile1)) 
         stream.WriteTo(output); 
 
      Process.Start(documentFile1); 
   } 
 
   // Download it again, this time we will buffer it 32K at a time 
   downloadDocumentOptions = new DownloadDocumentOptions(); 
   downloadDocumentOptions.Cache = cache; 
   downloadDocumentOptions.DocumentId = documentId; 
   byte[] buffer = new byte[1024 * 32]; 
   using (var output = File.Create(documentFile2)) 
   { 
      // Offset to where we are: 
      long offset = 0; 
 
      int bytes; 
      do 
      { 
         downloadDocumentOptions.Offset = offset; 
         downloadDocumentOptions.Length = buffer.Length; 
         downloadDocumentOptions.Data = buffer; 
         downloadDocumentOptions.DataOffset = 0; 
         bytes = (int)DocumentFactory.DownloadDocument(downloadDocumentOptions); 
         if (bytes > 0) 
         { 
            Console.WriteLine("Downloaded {0} bytes into the buffer", bytes); 
            // Next chunk 
            offset += bytes; 
            output.Write(buffer, 0, bytes); 
 
            // The following method is obsolete. Use DownloadAnnotations(DownloadDocumentOptions) instead 
            int annotations = DocumentFactory.DownloadAnnotations(downloadDocumentOptions.Cache, downloadDocumentOptions.DocumentId, downloadDocumentOptions.Offset, buffer, downloadDocumentOptions.DataOffset, buffer.Length); 
            Console.WriteLine(annotations + " annotations downloaded"); 
         } 
      } 
      while (bytes > 0); 
   } 
 
   Process.Start(documentFile2); 
 
   // We are done, clean up 
   var deleteFromCacheOptions = new LoadFromCacheOptions(); 
   deleteFromCacheOptions.Cache = cache; 
   deleteFromCacheOptions.DocumentId = documentId; 
   DocumentFactory.DeleteFromCache(deleteFromCacheOptions); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; 
} 
Requirements

Target Platforms

Help Version 22.0.2023.4.21
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Document Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.