Downloads the data of the specified document ID into a stream.
[ObsoleteAttribute("User DownloadDocument(DownloadDocumentOptions) instead")]
public static int DownloadDocument(
ObjectCache cache,
string documentId,
long offset,
int bytes,
Stream stream
)
cache
The cache containing the document. This value cannot be null.
documentId
ID of the document to download.
offset
0-based byte offset into the source data at which to begin reading the data.
bytes
The maximum number of bytes to read. If this value is -1, then the remaining data will be read till the end is reached.
stream
Stream to read the data into. This should be a write-able stream and cannot be null.
The total number of bytes read into stream. This can be less than the number of bytes requested by bytes, if that many bytes are not currently available, or zero (0) if the end of the data has been reached.
Similar to UploadDocument, data can be downloaded in chunks or all at once. Refer to Uploading Using the Document Library for detailed information on how to use these methods and the various options used.
GetDocumentCacheInfo can be used to determine if a document is in the cache and to get its information.
DownloadAnnotations can be used to download the annotations of a document (if any).
This example will download the data of a document in the cache.
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:\LEADTOOLS23\Resources\Images";
}