DocumentLoadAttachmentsMode Enumeration (original) (raw)

Summary

Controls how to handle the embedded attachment found in the document during loading.

Syntax

[SerializableAttribute()] [DataContractAttribute()] public enum DocumentLoadAttachmentsMode

public: [SerializableAttribute, DataContractAttribute] enum class DocumentLoadAttachmentsMode sealed

class DocumentLoadAttachmentsMode(Enum): None = 0 AsAttachments = 1

Members

Value Member Description
0 None Do not read attachments.
1 AsAttachments Read all attachments.

Example

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 AttachmentsExample() { // The PDF document can be one of the following: // 1. Normal PDF without attachments. Has one or more pages and no attachments. // 2. Normal PDF with attachments. Has one or more pages and one or more attachments. // 3. PDF Portfolio. Has a placeholder page and one or more attachments. // The value of LoadDocumentOptions.LoadAttachmentsMode affects loading the documents as follows: // 1. Normal PDF without attachments: Will not be affected. // 2. Normal PDF with attachments: Number of pages is not affected. // Number of attachments is: // LoadAttachmentsMode = None then 0 // LoadAttachmentsMode = AsAttachments then number of attachments found in the document. // 3. PDF Portfolio: Number of pages is: // LoadAttachmentsMode = None then 1 (the placeholder page) // LoadAttachmentsMode = AsAttachments then 0 (the document has no pages). // Number of attachments is: // LoadAttachmentsMode = None then 0 // LoadAttachmentsMode = AsAttachments then number of attachments found in the document. // First, load the document without attachments string pdfFile = Path.Combine(LEAD_VARS.ImagesDir, "Leadtools.pdf"); string outputDirectory = Path.GetDirectoryName(LEAD_VARS.ImagesDir); Console.WriteLine($"Loading with DocumentLoadAttachmentsMode.None"); var loadDocumentOptions = new LoadDocumentOptions(); loadDocumentOptions.LoadAttachmentsMode = DocumentLoadAttachmentsMode.None; using (LEADDocument document = DocumentFactory.LoadFromFile(pdfFile, loadDocumentOptions)) { Console.WriteLine(document.GetDocumentFileName()); Console.WriteLine($"Document has {document.Pages.Count} pages"); // Find out if the document is portfolio bool isPortfolio = document.Metadata.ContainsKey(LEADDocument.MetadataKey_IsPortfolio) && bool.Parse(document.Metadata[LEADDocument.MetadataKey_IsPortfolio]); Console.WriteLine($"IsPortfolio:{isPortfolio}"); // Check that everything is as expected // We should have 0 attachments since we did not instruct the toolkit to load these Debug.Assert(document.Attachments.Count == 0); // We should have one or more pages regardless of whether the document is PDF portfolio Debug.Assert(document.Pages.Count > 0); } // Next, load the document with attachments Console.WriteLine($"Loading with DocumentLoadAttachmentsMode.AsAttachments"); loadDocumentOptions.LoadAttachmentsMode = DocumentLoadAttachmentsMode.AsAttachments; using (LEADDocument document = DocumentFactory.LoadFromFile(pdfFile, loadDocumentOptions)) { document.AutoDeleteAttachmentsFromCache = true; Console.WriteLine($"Document has {document.Pages.Count} pages"); // Find out if the document is portfolio bool isPortfolio = document.Metadata.ContainsKey(LEADDocument.MetadataKey_IsPortfolio) && bool.Parse(document.Metadata[LEADDocument.MetadataKey_IsPortfolio]); Console.WriteLine($"IsPortfolio:{isPortfolio}"); // Check that everything is as expected // We may have 0 or more attachments depending on the file Console.WriteLine($"Document has {document.Attachments.Count} attachments"); // We should have one or more pages unless this is PDF portfolio, then it will have 0 pages if (isPortfolio) { Debug.Assert(document.Pages.Count == 0); } // Extract all the attachments into the output directory foreach (DocumentAttachment attachment in document.Attachments) { // Show info on this attachment Console.WriteLine($"Attachment number {attachment.AttachmentNumber} file name is '{attachment.FileName}', " + $"length is {attachment.FileLength} bytes, and ID is {attachment.DocumentId}, Is Embedded: {attachment.IsEmbedded}"); // Get the attachment file name // This value may not be unique, so combine it with the attachment number string attachmentFileName = $"{attachment.AttachmentNumber}-{attachment.FileName}"; attachmentFileName = Path.Combine(outputDirectory, attachmentFileName); // Get the attachment as a stream, we do not want to save it to the cache so pass null for that // DocumentAttachments reference using (Stream attachmentStream = document.Attachments.CreateAttachmentStream(attachment.AttachmentNumber, null)) { if (attachmentStream != null) { // Save it to the output file using (var stream = File.Create(attachmentFileName)) { document.SaveAttachmentToCache(null); attachmentStream.CopyTo(stream); } } } var saveOptions = new SaveAttachmentToCacheOptions(); saveOptions.AttachmentNumber = 0; saveOptions.UpdateAttachmentDocumentId = true; saveOptions.UploadDocumentOptions = new UploadDocumentOptions(); document.SaveAttachmentToCache(saveOptions); // Or load this attachment as a LEADDocument, this might fail if the attachment is not of a valid image // or document format try { Console.WriteLine("Loading as LEADDocument"); var loadAttachmentOptions = new LoadAttachmentOptions(); loadAttachmentOptions.AttachmentNumber = attachment.AttachmentNumber; loadAttachmentOptions.UpdateAttachmentDocumentId = true; using (LEADDocument attachmentDocument = document.LoadDocumentAttachment(loadAttachmentOptions)) { Console.WriteLine($"Success, attachment document mime type is {attachmentDocument.MimeType} and has {attachmentDocument.Pages.Count} pages"); } } catch (Exception ex) { Console.WriteLine($"Error {ex.Message}"); } } } } static class LEAD_VARS { public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; }