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();
}