DisplayName Property
         
         
         
	Summary
Display name of the attachment.
 
	Syntax
public string DisplayName {get; set;} 
 
public:  
   property String^ DisplayName 
   { 
      String^ get() 
      void set(String^ value) 
   } 
 
Property Value
The display name of the attachment. The default value is null.
 
	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 ExternalAttachmentsExample() 
{ 
   // The cache we are using 
   var cache = new FileCache(); 
   cache.PolicySerializationMode = CacheSerializationMode.Json; 
   cache.DataSerializationMode = CacheSerializationMode.Json; 
   cache.CacheDirectory = @"c:\cache-dir"; 
 
   // The main document, its a PDF 
   string mainDocumentFile = @"C:\LEADTOOLS22\Resources\Images\leadtools.pdf"; 
 
   // Attachments we will be adding: a TIF, another PDF, and a JPG file 
   string[] attachmentFiles = 
   { 
      @"C:\LEADTOOLS22\Resources\Images\ocr1.tif", 
      @"C:\LEADTOOLS22\Resources\Images\employee benefits survey.pdf", 
      @"C:\LEADTOOLS22\Resources\Images\cannon.jpg" 
   }; 
 
   // Load the main document 
   string mainDocumentId; 
   var loadDocumentOptions = new LoadDocumentOptions(); 
   loadDocumentOptions.Cache = cache; 
   using (LEADDocument mainDocument = DocumentFactory.LoadFromFile(mainDocumentFile, loadDocumentOptions)) 
   { 
      // Save the document ID so we can load it from cache later 
      mainDocumentId = mainDocument.DocumentId; 
 
      // Show this document, it should have no attachments at this point 
      ShowDocumentWithAttachments("Initial", mainDocument, 0); 
 
      mainDocument.IsReadOnly = false; 
      // Now, load each attachment document and add it to the main document 
      foreach (string attachmentFile in attachmentFiles) 
      { 
         int attachmentNumber = 1; 
         using (LEADDocument attachmentDocument = DocumentFactory.LoadFromFile(attachmentFile, loadDocumentOptions)) 
         { 
            // Save this document to the cache 
            attachmentDocument.AutoDeleteFromCache = false; 
            attachmentDocument.SaveToCache(); 
 
            // Add it to the main document as an attachment 
            var attachment = new DocumentAttachment(); 
            // The attachment number. 
            attachment.AttachmentNumber = attachmentNumber; 
            // This is an external attachment 
            attachment.IsEmbedded = false; 
            // And the document ID 
            attachment.DocumentId = attachmentDocument.DocumentId; 
 
            // The rest of the properties are optional but setting them might be helpful to an application user interface 
            attachment.FileName = attachmentDocument.Name; 
            attachment.DisplayName = attachmentDocument.Name; 
            attachment.FileLength = attachmentDocument.FileLength; 
            attachment.MimeType = attachmentDocument.MimeType; 
 
            mainDocument.Attachments.Add(attachment); 
            attachmentNumber++; 
         } 
      } 
      mainDocument.IsReadOnly = true; 
 
      // Now, show the document info again, it should have 3 attachments 
      ShowDocumentWithAttachments("After adding attachments", mainDocument, attachmentFiles.Length); 
 
      // Ensure that attachments will be deleted when the owner document is removed 
      mainDocument.AutoDeleteAttachmentsFromCache = true; 
      // Save this document to the cache 
      mainDocument.AutoDeleteFromCache = false; 
      mainDocument.SaveToCache(); 
   } 
 
   // Re-load the main document from the cache 
   var loadFromCacheOptions = new LoadFromCacheOptions(); 
   loadFromCacheOptions.Cache = cache; 
   loadFromCacheOptions.DocumentId = mainDocumentId; 
   using (LEADDocument mainDocument = DocumentFactory.LoadFromCache(loadFromCacheOptions)) 
   { 
      // Show this document, it should have the attachments we saved 
      ShowDocumentWithAttachments("Loaded from cache", mainDocument, attachmentFiles.Length); 
   } 
 
 
   // Another way of loading this attachment is with DocumentFactory.LoadDocumentAttachment using the attachment number. 
   // This method can be used to load both external and embedded attachments using the owner document ID and the attachment number. 
   Console.WriteLine("Using LoadDocumentAttachments:"); 
   for (var attachmentNumber = 1; attachmentNumber <= attachmentFiles.Length; attachmentNumber++) 
   { 
      // For loading the main document 
      loadFromCacheOptions = new LoadFromCacheOptions(); 
      loadFromCacheOptions.Cache = cache; 
      loadFromCacheOptions.DocumentId = mainDocumentId; 
 
      // For loading the attachment 
      var loadAttachmentOptions = new LoadAttachmentOptions(); 
      loadAttachmentOptions.AttachmentNumber = attachmentNumber; 
 
      using (LEADDocument attachmentDocument = DocumentFactory.LoadDocumentAttachment(loadFromCacheOptions, loadAttachmentOptions)) 
      { 
         Console.WriteLine("  " + GetDocumentInfo(attachmentDocument)); 
      } 
   } 
 
   // Clean up by deleting the original document from the cache. This will cause all attachment documents to be deleted as well 
   // Since we set AutoDeleteAttachmentsFromCache to true earlier 
   loadFromCacheOptions = new LoadFromCacheOptions(); 
   loadFromCacheOptions.Cache = cache; 
   loadFromCacheOptions.DocumentId = mainDocumentId; 
   DocumentFactory.DeleteFromCache(loadFromCacheOptions); 
} 
 
private static void ShowDocumentWithAttachments(string message, LEADDocument document, int attachmentCount) 
{ 
   // Show info about this document and any attachments 
   Console.WriteLine(message); 
   Console.WriteLine("  " + GetDocumentInfo(document)); 
 
   // Sanity check 
   Debug.Assert(attachmentCount == document.Attachments.Count); 
 
   if (document.Attachments.Count > 0) 
   { 
      Console.WriteLine("    Attachments:"); 
 
      // Show the attachments 
      foreach (DocumentAttachment attachment in document.Attachments) 
      { 
         // Load the attachment as a LEADDocument using the document ID 
         // This method works for external attachments only 
         var loadFromCacheOptions = new LoadFromCacheOptions(); 
         loadFromCacheOptions.Cache = document.GetCache(); 
         loadFromCacheOptions.DocumentId = attachment.DocumentId; 
         using (LEADDocument attachmentDocument = DocumentFactory.LoadFromCache(loadFromCacheOptions)) 
         { 
            Console.WriteLine("      " + GetDocumentInfo(attachmentDocument)); 
         } 
      } 
   } 
} 
 
private static string GetDocumentInfo(LEADDocument document) 
{ 
   return $"DocumentId:{document.DocumentId} MimeType:{document.MimeType} Pages:{document.Pages.Count} Attachments:{document.Attachments.Count}"; 
} 
 
 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URI; 
import java.net.URISyntaxException; 
import java.net.URL; 
import java.nio.file.Files; 
import java.nio.file.Paths; 
import java.util.ArrayList; 
import java.util.Calendar; 
import java.util.List; 
import java.util.concurrent.Callable; 
import java.util.concurrent.ExecutorService; 
import java.util.concurrent.Executors; 
import java.util.concurrent.Future; 
import java.util.regex.Pattern; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
 
import leadtools.*; 
import leadtools.annotations.engine.*; 
import leadtools.barcode.*; 
import leadtools.caching.*; 
import leadtools.codecs.*; 
import leadtools.document.*; 
import leadtools.document.DocumentMimeTypes.UserGetDocumentStatusHandler; 
import leadtools.document.converter.*; 
import leadtools.document.writer.*; 
import leadtools.ocr.*; 
 
 
public void attachmentsDocumentIdExample() { 
 
   // The cache we are using 
   FileCache cache = new FileCache(); 
   cache.setPolicySerializationMode(CacheSerializationMode.JSON); 
   cache.setDataSerializationMode(CacheSerializationMode.JSON); 
   cache.setCacheDirectory("c:\\cache-dir"); 
 
   // The main document, its a PDF 
   String mainDocumentFile = "C:\\LEADTOOLS23\\Resources\\Images\\leadtools.pdf"; 
 
   // Attachments we will be adding: a TIF, another PDF, and a JPG file 
   String[] attachmentFiles = { 
         "C:\\LEADTOOLS23\\Resources\\Images\\ocr1.tif", 
         "C:\\LEADTOOLS23\\Resources\\Images\\employee benefits survey.pdf", 
         "C:\\LEADTOOLS23\\Resources\\Images\\cannon.jpg" 
   }; 
 
   // Load the main document 
   String mainDocumentId; 
   LoadDocumentOptions loadDocumentOptions = new LoadDocumentOptions(); 
   loadDocumentOptions.setCache(cache); 
   LEADDocument mainDocument = DocumentFactory.loadFromFile(mainDocumentFile, loadDocumentOptions); 
 
   // Save the document ID so we can load it from cache later 
   mainDocumentId = mainDocument.getDocumentId(); 
 
   // Show this document, it should have no attachments at this point 
   showDocumentWithAttachments("Initial", mainDocument, 0); 
   mainDocument.setReadOnly(false); 
   // Now, load each attachment document and add it to the main document 
   for (String attachmentFile : attachmentFiles) { 
      int attachmentNumber = 1; 
      LEADDocument attachmentDocument = DocumentFactory.loadFromFile(attachmentFile, loadDocumentOptions); 
      // Save this document to the cache 
      attachmentDocument.setAutoDeleteFromCache(false); 
      attachmentDocument.saveToCache(); 
 
      // Add it to the main document as an attachment 
      DocumentAttachment attachment = new DocumentAttachment(); 
      // The attachment number. 
      attachment.setAttachmentNumber(attachmentNumber); 
      // This is an external attachment 
      attachment.setEmbedded(false); 
      // And the document ID 
      attachment.setDocumentId(attachmentDocument.getDocumentId()); 
 
      // The rest of the properties are optional but setting them might be helpful to 
      // an application user interface 
      attachment.setFileName(attachmentDocument.getName()); 
      attachment.setDisplayName(attachmentDocument.getName()); 
      attachment.setFileLength(attachmentDocument.getFileLength()); 
      attachment.setMimeType(attachmentDocument.getMimeType()); 
 
      mainDocument.getAttachments().add(attachment); 
      attachmentNumber++; 
   } 
   mainDocument.setReadOnly(true); 
 
   // Now, show the document info again, it should have 3 attachments 
   showDocumentWithAttachments("After adding attachments", mainDocument, attachmentFiles.length); 
 
   // Ensure that attachments will be deleted when the owner document is removed 
   mainDocument.setAutoDeleteAttachmentsFromCache(true); 
   // Save this document to the cache 
   mainDocument.setAutoDeleteFromCache(false); 
   mainDocument.saveToCache(); 
 
   // Re-load the main document from the cache 
   LoadFromCacheOptions loadFromCacheOptions = new LoadFromCacheOptions(); 
   loadFromCacheOptions.setCache(cache); 
   loadFromCacheOptions.setDocumentId(mainDocumentId); 
 
   mainDocument = DocumentFactory.loadFromCache(loadFromCacheOptions); 
 
   // Show this document, it should have the attachments we saved 
   showDocumentWithAttachments("Loaded from cache", mainDocument, attachmentFiles.length); 
 
   // Another way of loading this attachment is with 
   // DocumentFactory.LoadDocumentAttachment using the attachment number. 
   // This method can be used to load both external and embedded attachments using 
   // the owner document ID and the attachment number. 
   System.out.println("Using LoadDocumentAttachments:"); 
   for (int attachmentNumber = 1; attachmentNumber <= attachmentFiles.length; attachmentNumber++) { 
      // For loading the main document 
      loadFromCacheOptions = new LoadFromCacheOptions(); 
      loadFromCacheOptions.setCache(cache); 
      loadFromCacheOptions.setDocumentId(mainDocumentId); 
 
      // For loading the attachment 
      LoadAttachmentOptions loadAttachmentOptions = new LoadAttachmentOptions(); 
      loadAttachmentOptions.setAttachmentNumber(attachmentNumber); 
 
      LEADDocument attachmentDocument = DocumentFactory.loadDocumentAttachment(loadFromCacheOptions, 
            loadAttachmentOptions); 
      System.out.println("  " + getDocumentInfo(attachmentDocument)); 
 
   } 
 
   // Clean up by deleting the original document from the cache. This will cause 
   // all attachment documents to be deleted as well 
   // Since we set AutoDeleteAttachmentsFromCache to true earlier 
   loadFromCacheOptions = new LoadFromCacheOptions(); 
   loadFromCacheOptions.setCache(cache); 
   loadFromCacheOptions.setDocumentId(mainDocumentId); 
   DocumentFactory.deleteFromCache(loadFromCacheOptions); 
 
} 
 
private static void showDocumentWithAttachments(String message, LEADDocument document, int attachmentCount) { 
 
   // Show info about this document and any attachments 
   System.out.println(message); 
   System.out.println("  " + getDocumentInfo(document)); 
 
   // Sanity check 
   assertTrue(attachmentCount == document.getAttachments().size()); 
 
   if (document.getAttachments().size() > 0) { 
      System.out.println("    Attachments:"); 
 
      // Show the attachments 
      for (DocumentAttachment attachment : document.getAttachments()) { 
         // Load the attachment as a LEADDocument using the document ID 
         // This method works for external attachments only 
         LoadFromCacheOptions loadFromCacheOptions = new LoadFromCacheOptions(); 
         loadFromCacheOptions.setCache(document.getCache()); 
         loadFromCacheOptions.setDocumentId(attachment.getDocumentId()); 
         LEADDocument attachmentDocument = DocumentFactory.loadFromCache(loadFromCacheOptions); 
 
         System.out.println("      " + getDocumentInfo(attachmentDocument)); 
      } 
   } 
} 
 
private static String getDocumentInfo(LEADDocument document) { 
   return "DocumentId:" + document.getDocumentId() + " MimeType:" + document.getMimeType() + " Pages:" 
         + document.getPages().size() + " Attachments:" + document.getAttachments().size(); 
}