documentId Property

Summary

ID of this attachment document.

Syntax
TypeScript
JavaScript
Object.defineProperty(DocumentAttachment.prototype, 'documentId', 
   get: function(), 
   set: function(value) 
) 
documentId: string; 

Property Value

ID of this attachment document. The default value is null.

Remarks

isEmbedded is set to true when embedded attachments are read from a document and the value of documentId will be null.

Application programs adding external attachments should set the value of isEmbedded to false and set documentId to the ID of the document representing the attachment.

For more information, refer to Document Attachments.

Example

For an example of using embedded attachments, refer to DocumentAttachment.

This example will add both a TIF and a PNG document as attachments to a LEADDocument.

DocumentId.ts
DocumentHelper.ts
DocumentId.js
DocumentHelper.js
DocumentId.html
import { DocumentHelper } from "../../utilities/DocumentHelper"; 
 
export class DocumentAttachment_DocumentIdExample { 
   private el: HTMLElement; 
 
   public constructor() { 
      lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/v200/LEADTOOLSEVAL.txt", "EVAL", null); 
      DocumentHelper.initFactory(); 
   } 
 
   public run(buttonID: string) { 
      document.getElementById(buttonID).onclick = this.onRun; 
   } 
 
   onRun = () => { 
      // Main document 
      const mainDocumentUrl = "https://demo.leadtools.com/images/pdf/leadtools.pdf"; 
      // Attachments 
      const attachmentsUrls = [ 
         "https://demo.leadtools.com/images/png/ocr1.png", 
         "https://demo.leadtools.com/images/tiff/ocr.tif", 
      ]; 
       
      // Load the main document 
      this.loadDocument(mainDocumentUrl, (mainDocument) => { 
         this.showDocumentWithAttachments("Initial", mainDocument, 0, () => { 
 
            // Load all the attachments 
            mainDocument.isReadOnly = false; 
            this.loadAndAddAttachment(mainDocument, attachmentsUrls, 0, () => { 
               mainDocument.isReadOnly = true; 
 
               // Now, show the document info again, it should have 3 attachments 
               this.showDocumentWithAttachments("After adding attachments", mainDocument, attachmentsUrls.length, () => { 
                  // Clean up 
                  lt.Document.DocumentFactory.deleteFromCache(mainDocument.documentId) 
                     .done(() => { 
                        console.log("Example done"); 
                     }) 
                     .fail(DocumentHelper.showServiceError); 
               }); 
            }); 
         }); 
      }); 
   } 
 
   loadDocument = (url: string, done: (doc: lt.Document.LEADDocument) => void) => { 
      DocumentHelper.log("Loading document " + url); 
      lt.Document.DocumentFactory.loadFromUri(url, new lt.Document.LoadDocumentOptions()) 
          .done((doc) => { 
              DocumentHelper.log("Document loaded and has cache id: " + doc.documentId); 
              done(doc); 
          }) 
          .fail(DocumentHelper.showServiceError); 
   } 
 
   showDocumentWithAttachments = (message: string, doc: lt.Document.LEADDocument, attachmentCount: number, done: () => void) => { 
      // Show info about this document and any attachments 
      console.log(message); 
      console.log("  " + this.getDocumentInfo(doc)); 
 
      // Sanity check 
      if (attachmentCount !== doc.attachments.count) throw new Error("Something went wrong"); 
       
      if (doc.attachments.count > 0) { 
         console.log("    attachments:"); 
          
         // Load the attachment documents 
         this.loadAttachmentDocumentsFromCache(doc, 0, done); 
      } else { 
         done(); 
      } 
   } 
 
   loadAndAddAttachment = (mainDocument: lt.Document.LEADDocument, attachmentUrls: string[], attachmentIndex: number, done: () => void) => { 
      if (attachmentIndex >= attachmentUrls.length) { 
         done(); 
         return; 
      } 
 
      console.log("Loading attachment document " + attachmentUrls[attachmentIndex]); 
      this.loadDocument(attachmentUrls[attachmentIndex], (attachmentDocument) => { 
         // Add it to the main document as an attachment 
         const attachment = new lt.Document.DocumentAttachment(); 
         // The attachment number. 
         attachment.attachmentNumber = attachmentIndex + 1; 
         // 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.mimeType = attachmentDocument.mimeType; 
 
         mainDocument.attachments.add(attachment); 
 
         // Load next 
         this.loadAndAddAttachment(mainDocument, attachmentUrls, attachmentIndex + 1, done); 
      }); 
   } 
 
   loadAttachmentDocumentsFromCache = (mainDocument: lt.Document.LEADDocument, attachmentIndex: number, done: () => void) => { 
      if (attachmentIndex >= mainDocument.attachments.count) { 
         done(); 
         return; 
      } 
 
      // Get the attachment document ID 
      const documentAttachment = mainDocument.attachments.item(attachmentIndex); 
      lt.Document.DocumentFactory.loadFromCache(documentAttachment.documentId) 
         .done((doc) => { 
            console.log("    " + this.getDocumentInfo(doc)); 
            this.loadAttachmentDocumentsFromCache(mainDocument, attachmentIndex + 1, done); 
         }) 
         .fail(DocumentHelper.showServiceError); 
   } 
 
   private getDocumentInfo(doc: lt.Document.LEADDocument) { 
      let msg = "documentId:" + doc.documentId; 
      msg += " mimeType:" + doc.mimeType; 
      msg += " pages:" + doc.pages.count; 
      msg += " attachments:" + doc.attachments.count; 
      return msg; 
   } 
} 
export class DocumentHelper { 
   static showServiceError = (jqXHR, statusText, errorThrown) => { 
      alert("Error returned from service. See the console for details."); 
      const serviceError = lt.Document.ServiceError.parseError(jqXHR, statusText, errorThrown); 
      console.error(serviceError); 
   } 
 
   static log = (message: string, data?: any) => { 
      const outputElement = document.getElementById("output"); 
      if (outputElement) { 
         const time = (new Date()).toLocaleTimeString(); 
         const textElement = document.createElement("p"); 
         textElement.innerHTML = (outputElement.childElementCount + 1) + " [" + time + "]: " + message; 
         outputElement.insertBefore(textElement, outputElement.firstChild); 
      } 
 
      if (!data) 
         console.log(message); 
      else 
         console.log(message, data); 
   } 
 
   static initFactory = () => { 
      // To communicate with the DocumentsService, it must be running! 
      // Change these parameters to match the path to the service. 
      lt.Document.DocumentFactory.serviceHost = "http://localhost:40000"; 
      lt.Document.DocumentFactory.servicePath = ""; 
      lt.Document.DocumentFactory.serviceApiPath = "api"; 
   } 
} 
import { DocumentHelper } from "../../utilities/DocumentHelper"; 
 
export class DocumentAttachment_DocumentIdExample { 
   constructor() { 
      lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/v200/LEADTOOLSEVAL.txt", "EVAL", null); 
      DocumentHelper.initFactory(); 
   } 
 
   run = (buttonID) => { 
      document.getElementById(buttonID).onclick = this.onRun; 
   } 
 
   onRun = () => { 
      // Main document 
      const mainDocumentUrl = "https://demo.leadtools.com/images/pdf/leadtools.pdf"; 
      // Attachments 
      const attachmentsUrls = [ 
         "https://demo.leadtools.com/images/png/ocr1.png", 
         "https://demo.leadtools.com/images/tiff/ocr.tif", 
      ]; 
       
      // Load the main document 
      this.loadDocument(mainDocumentUrl, (mainDocument) => { 
         this.showDocumentWithAttachments("Initial", mainDocument, 0, () => { 
 
            // Load all the attachments 
            mainDocument.isReadOnly = false; 
            this.loadAndAddAttachment(mainDocument, attachmentsUrls, 0, () => { 
               mainDocument.isReadOnly = true; 
 
               // Now, show the document info again, it should have 3 attachments 
               this.showDocumentWithAttachments("After adding attachments", mainDocument, attachmentsUrls.length, () => { 
                  // Clean up 
                  lt.Document.DocumentFactory.deleteFromCache(mainDocument.documentId) 
                     .done(() => { 
                        console.log("Example done"); 
                     }) 
                     .fail(DocumentHelper.showServiceError); 
               }); 
            }); 
         }); 
      }); 
   } 
 
   loadDocument = (url, done) => { 
      DocumentHelper.log("Loading document " + url); 
      lt.Document.DocumentFactory.loadFromUri(url, new lt.Document.LoadDocumentOptions()) 
          .done((doc) => { 
              DocumentHelper.log("Document loaded and has cache id: " + doc.documentId); 
              done(doc); 
          }) 
          .fail(DocumentHelper.showServiceError); 
   } 
 
   showDocumentWithAttachments = (message, doc, attachmentCount, done) => { 
      // Show info about this document and any attachments 
      console.log(message); 
      console.log("  " + this.getDocumentInfo(doc)); 
 
      // Sanity check 
      if (attachmentCount !== doc.attachments.count) throw new Error("Something went wrong"); 
       
      if (doc.attachments.count > 0) { 
         console.log("    attachments:"); 
          
         // Load the attachment documents 
         this.loadAttachmentDocumentsFromCache(doc, 0, done); 
      } else { 
         done(); 
      } 
   } 
 
   loadAndAddAttachment = (mainDocument, attachmentUrls, attachmentIndex, done) => { 
      if (attachmentIndex >= attachmentUrls.length) { 
         done(); 
         return; 
      } 
 
      console.log("Loading attachment document " + attachmentUrls[attachmentIndex]); 
      this.loadDocument(attachmentUrls[attachmentIndex], (attachmentDocument) => { 
         // Add it to the main document as an attachment 
         const attachment = new lt.Document.DocumentAttachment(); 
         // The attachment number. 
         attachment.attachmentNumber = attachmentIndex + 1; 
         // 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.mimeType = attachmentDocument.mimeType; 
 
         mainDocument.attachments.add(attachment); 
 
         // Load next 
         this.loadAndAddAttachment(mainDocument, attachmentUrls, attachmentIndex + 1, done); 
      }); 
   } 
 
   loadAttachmentDocumentsFromCache = (mainDocument, attachmentIndex, done) => { 
      if (attachmentIndex >= mainDocument.attachments.count) { 
         done(); 
         return; 
      } 
 
      // Get the attachment document ID 
      const documentAttachment = mainDocument.attachments.item(attachmentIndex); 
      lt.Document.DocumentFactory.loadFromCache(documentAttachment.documentId) 
         .done((doc) => { 
            console.log("    " + this.getDocumentInfo(doc)); 
            this.loadAttachmentDocumentsFromCache(mainDocument, attachmentIndex + 1, done); 
         }) 
         .fail(DocumentHelper.showServiceError); 
   } 
 
   getDocumentInfo(doc) { 
      let msg = "documentId:" + doc.documentId; 
      msg += " mimeType:" + doc.mimeType; 
      msg += " pages:" + doc.pages.count; 
      msg += " attachments:" + doc.attachments.count; 
      return msg; 
   } 
} 
export class DocumentHelper { 
   static showServiceError = (jqXHR, statusText, errorThrown) => { 
      alert("Error returned from service. See the console for details."); 
      const serviceError = lt.Document.ServiceError.parseError(jqXHR, statusText, errorThrown); 
      console.error(serviceError); 
   } 
 
   static log = (message, data) => { 
      const outputElement = document.getElementById("output"); 
      if (outputElement) { 
         const time = (new Date()).toLocaleTimeString(); 
         const textElement = document.createElement("p"); 
         textElement.innerHTML = (outputElement.childElementCount + 1) + " [" + time + "]: " + message; 
         outputElement.insertBefore(textElement, outputElement.firstChild); 
      } 
 
      if (!data) 
         console.log(message); 
      else 
         console.log(message, data); 
   } 
 
   static initFactory = () => { 
      // To communicate with the DocumentsService, it must be running! 
      // Change these parameters to match the path to the service. 
      lt.Document.DocumentFactory.serviceHost = "http://localhost:40000"; 
      lt.Document.DocumentFactory.servicePath = ""; 
      lt.Document.DocumentFactory.serviceApiPath = "api"; 
   } 
} 
<!doctype html> 
<html lang="en"> 
<title>Document Example | DocumentAttachment.DocumentID</title> 
 
<head> 
   <script src="https://code.jquery.com/jquery-2.2.4.min.js" 
      integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 
 
   <script src="../../LT/Leadtools.js"></script> 
   <script src="../../LT/Leadtools.Controls.js"></script> 
   <script src="../../LT/Leadtools.Annotations.Engine.js"></script> 
   <script src="../../LT/Leadtools.Annotations.Designers.js"></script> 
   <script src="../../LT/Leadtools.Annotations.Rendering.Javascript.js"></script> 
   <script src="../../LT/Leadtools.Annotations.Automation.js"></script> 
   <script src="../../LT/Leadtools.ImageProcessing.Main.js"></script> 
   <script src="../../LT/Leadtools.ImageProcessing.Color.js"></script> 
   <script src="../../LT/Leadtools.ImageProcessing.Core.js"></script> 
   <script src="../../LT/Leadtools.ImageProcessing.Effects.js"></script> 
   <script src="../../LT/Leadtools.Document.js"></script> 
   <script src="../../LT/Leadtools.Document.Viewer.js"></script> 
   <link rel="stylesheet" type="text/css" href="../../css/examples.css"> 
 
   <!-- All demo files are bundled and appended to the window --> 
   <script src="../../bundle.js" type="text/javascript"></script> 
</head> 
 
<body> 
   <div> 
      <button type="button" id="exampleButton">Run Example</button> 
   </div> 
   <div id="output"></div> 
   <div> 
      <img id="img" /> 
   </div> 
</body> 
 
<script> 
   window.onload = () => { 
      const example = new window.examples.DocumentAttachment.DocumentId(); 
      example.run("exampleButton"); 
   }; 
</script> 
</html> 
Requirements
Target Platforms
Help Version 21.0.2021.7.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

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