LEADDocument Object

Summary

Encapsulates a multipage document with support for raster and SVG images, bookmarks, annotations, and text data.

Syntax
TypeScript
JavaScript
function lt.Document.LEADDocument 
class lt.Document.LEADDocument() 
Remarks

The LEADDocument class provides uniform support for any type of document. The actual data behind it can be a PDF document, Microsoft Word document, TIFF image, an AutoCAD DWG drawing, or any other of the hundreds of different raster, document, or file formats supported by LEADTOOLS. LEADDocument encapsulates the common functionality needed to uniformly access this data with the same properties, methods, and data structures.

Document Viewer

LEADDocument is used as an input to the DocumentViewer, which can be used to view the document and its pages and includes thumbnail, virtualization, text search, and annotation support.

Creating a Document Object

Method Description
DocumentFactory.LoadFromUri Creates a new instance from a document stored in a remote URL.
DocumentFactory.LoadFromCache Loads a previously saved document from the cache.
DocumentFactory.Create Creates a new empty document.

Encryption

In most cases, the LEADDocument is ready to use after it has been obtained. However, some documents such as PDF can be encrypted and require a password before it can be parsed and used. Most of the properties and methods of LEADDocument will throw an error if the document has not been decrypted. IsEncrypted can be used to check if the document is encrypted and if so, Decrypt must be called with the password obtained from the user to unlock the document. When that happens, the value of IsDecrypted becomes true and the document is ready to be used.

Note that IsEncrypted will stay true to indicate the original state of the document.

Document Identifier

Each document has a unique identifier that is set at creation time by the framework. it is stored in the DocumentId property. The ID is important when using the document with the cache system. The ID is the only value needed to completely re-construct the document from the cache.

The document ID can be set manually by the user by calling the LoadDocumentOptions.DocumentId, CreateDocumentOptions.DocumentId, or BeginUploadDocument options used when loading, creating or uploading the document. If the value is left as null, then the factory will generate a new random ID to associate with.

Caching

Documents can contain large numbers of pages and huge amounts of data. Storing all this data in the physical memory is not feasible in most situations. Therefore, the LEADDocument class was designed to use an external caching system to store previously requested document sections and document modifications.

Structure and Table of Contents

DocumentStructure manages the structure of the document. This includes the bookmarks that represent the table of contents. Access the structure through the Structure property of LEADDocument.

Pages

The DocumentPage is the main entry point for using the documents in a viewer or converter application. It contains functions to retrieve or update the raster or SVG image of the page, text data, annotations, and hyperlinks.

DocumentPages manages the pages of the document. It can be accessed through the Pages property of LEADDocument.

DocumentPages is a standard JavaScript array; you can use any of the collection methods to add, remove, insert, get, set and iterate through the DocumentPage items.

Documents

DocumentDocuments manages the child documents of the document. It can be accessed through the Documents property of LEADDocument.

DocumentDocuments derives from LeadCollection. You can use any of the collection's methods to iterate through the documents.

This collection is read-only, however, and you cannot add, remove, or change the items. Instead, use Pages to add or remove pages that belongto a document other than this one. The LEADDocument.Documents collection will automatically get updated to reflect which child documents are currently held in the document.

Metadata

The metadata includes default values added by the service when the document is loaded or created, as well as any other data extracted from the document file itself such as the author, subject, and any keywords stored by other applications.

Properties

The following properties are part of LEADDocument and contain useful information:

  • DocumentId: The unique identifier for this document.

  • Name: The optional name of this document.

  • MimeType: The MIME type of the document.

  • Uri: The URL to the original document's physical location. If this is a newly created document, then Uri will be null.

  • CacheUri: The URL to the original document's image data if it was stored in the cache.

  • IsReadOnly: Determines if the document is read-only and cannot be changed.

  • FileLength: The length of the original document file or URL, in bytes.

  • CacheStatus: The status of this document in the cache.

Global Document Settings

The LEADDocument class contains the following properties to manage the global settings used throughout the document.

  • Images: Manages the raster and SVG image settings of the document.

  • Annotations: Manages the annotations settings of the document.

  • Text: Manages the text and OCR recognition settings of the document.

  • Barcodes: Manages the barcode settings of the document.

Document Units

LEADDocument uses independent units of 1/720 of an inch for all items. This value is stored in the UnitsPerInch constant (720). Refer to the Document Library Coordinate System for more information.

Example
LoadFromUri.ts
DocumentHelper.ts
LoadFromUri.js
DocumentHelper.js
LoadFromUri.html
import { DocumentHelper } from "../../utilities/DocumentHelper"; 
 
export class DocumentFactory_LoadFromUriExample { 
    private imgEle: HTMLElement; 
    public constructor() { 
       lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", function ( 
          setLicenseResult 
       ) { 
          if (setLicenseResult.result) { 
             console.log("LEADTOOLS client license set successfully"); 
          } else { 
             var msg = "LEADTOOLS License is missing, invalid or expired\nError:\n";  
             alert(msg);  
          } 
       }); 
        DocumentHelper.initFactory(); 
    } 
 
    public run = (buttonID: string, imgID: string) => { 
        document.getElementById(buttonID).onclick = this.loadFromUri; 
        this.imgEle = document.getElementById(imgID); 
    } 
 
    /** 
     * Load a new document from URI 
     */ 
    loadFromUri = () => { 
        const url = "https://demo.leadtools.com/images/pdf/leadtools.pdf"; 
        const loadDocumentOptions = new lt.Document.LoadDocumentOptions(); 
 
        lt.Document.DocumentFactory.loadFromUri(url, loadDocumentOptions) 
            .done((document: lt.Document.LEADDocument) => { 
                DocumentHelper.log("Document loaded with " + document.pages.count + " pages", document); 
 
                // Show the PDF image of the first page 
                const page = document.pages.item(0); 
                (this.imgEle as HTMLImageElement).src = page.getSvgUrl(lt.Document.DocumentGetSvgOptions.none); 
            }) 
            .fail(DocumentHelper.showServiceError); 
    } 
} 
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 DocumentFactory_LoadFromUriExample { 
    imgEle; 
    constructor() { 
       lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", function ( 
          setLicenseResult 
       ) { 
          if (setLicenseResult.result) { 
             console.log("LEADTOOLS client license set successfully"); 
          } else { 
             var msg = "LEADTOOLS License is missing, invalid or expired\nError:\n"; 
             alert(msg); 
          } 
       }); 
        DocumentHelper.initFactory(); 
    } 
 
    run = (buttonID, imgID) => { 
        document.getElementById(buttonID).onclick = this.loadFromUri; 
        this.imgEle = document.getElementById(imgID); 
    } 
 
    /** 
     * Load a new document from URI 
     */ 
    loadFromUri = () => { 
        const url = "https://demo.leadtools.com/images/pdf/leadtools.pdf"; 
        const loadDocumentOptions = new lt.Document.LoadDocumentOptions(); 
 
        lt.Document.DocumentFactory.loadFromUri(url, loadDocumentOptions) 
            .done((document) => { 
                DocumentHelper.log("Document loaded with " + document.pages.count + " pages", document); 
 
                // Show the PDF image of the first page 
                const page = document.pages.item(0); 
                this.imgEle.src = page.getSvgUrl(lt.Document.DocumentGetSvgOptions.none); 
            }) 
            .fail(DocumentHelper.showServiceError); 
    } 
} 
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 | LoadFromUri</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.DocumentFactory.LoadFromUri(); 
      example.run("exampleButton"); 
   }; 
</script> 
</html> 
Requirements

Target Platforms

Help Version 23.0.2024.7.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

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