Document Object

Summary

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

Syntax

JavaScript Syntax
function lt.Documents.Document 
TypeScript Syntax
class lt.Documents.Document() 

Remarks

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

Document Viewer

Documents is used as an input to the LEADTOOLS DocumentViewer, which can be used to view the document and its pages with thumbnails, virtualization, text search and annotation support.

Creating a Document Class

A Document instance be obtained using the following:

Method Description
DocumentFactory.LoadFromUri Create 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 Document is ready to use after it has been obtained. However, some documents such as PDF can be encrypted and require a password before they can be parsed and used. Most of the properties and methods of Document 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 a 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. This is stored in the DocumentId property. The ID is important when using the document with the cache system and is the only value needed to re-construct completely the document from the cache. The document ID can be set manually by the user through the LoadDocumentOptions.DocumentId, CreateDocumentOptions.DocumentId or BeginUpload options used when loading, creating or uploading the document. If the value was left to null, then the factory will generate a new random ID and associated it with

Caching

Documents can contain large number of pages and huge amount of data. Storing all this data in the physical memory is not feasible in most situations. Therefore, the Document 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. They can be accessed through the Structure property of Document.

Pages

DocumentPages manages the pages of the document. It can be accessed through the Pages property of Document. 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. 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.

Documents

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

DocumentDocuments derives from LeadCollection. You can use any of the collection 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 belong to a separate document to this one. The Document.Documents collection will automatically gets updated to reflect what 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 author, subject and any keywords stored by other applications.

Properties

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

  • DocumentId: The unique identifier of this document.

  • Name: The optional name of this document.

  • MimeType: The MIME type of the document.

  • Uri: The URL to the original document 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 Document class contains the following to manage 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

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

Example

This example will set up the LEADTOOLS Documents Service and load a PDF document.

JavaScript Example
function run() { 
   // Setup access to the LEADTOOLS Documents service. 
   setupService(); 
 
   // Run this example 
   //documentExample(); 
   createDocumentExample(); 
} 
 
// Helper method to parse LEADTOOLS Documents service error messages 
function showServiceError(jqXHR, statusText, errorThrown) { 
   var message = errorThrown; 
   var serviceError = lt.Documents.ServiceError.parseError(jqXHR, statusText, errorThrown); 
   if (!serviceError.isParseError && !serviceError.isBrowserError) { 
      message += " - " + serviceError.message; 
   } 
   alert(message); 
} 
 
function documentExample() { 
   // Load a new document with default options 
   var url = "https://demo.leadtools.com/images/pdf/leadtools.pdf"; 
   console.log(url); 
   var loadDocumentOptions = new lt.Documents.LoadDocumentOptions(); 
   lt.Documents.DocumentFactory.loadFromUri(url, loadDocumentOptions) 
       .done(function (doc) { 
          console.log("Loaded"); 
          // Do something with the document 
          showDocumentInfo(doc); 
          // Finished with it 
          document.dispose(); 
       }) 
       .fail(function (jqXHR, statusText, errorThrown) { 
          showServiceError(jqXHR, statusText, errorThrown); 
       }); 
} 
 
function setupService() { 
   // Assuming the Documents service is installed on the same machine 
   // Change these parameters to match the path to the service 
   lt.Documents.DocumentFactory.serviceHost = "http://localhost/DocumentsService"; 
   lt.Documents.DocumentFactory.servicePath = ""; 
   lt.Documents.DocumentFactory.serviceApiPath = "api"; 
} 
 
function showDocumentInfo(doc) { 
   var output = { 
      Document: { 
         documentId: doc.documentId, 
         name: doc.name, 
         cacheStatus: doc.cacheStatus, 
         lastCacheSyncTime: doc.lastCacheSyncTime, 
         uri: doc.uri != null ? doc.uri : "null", 
         isReadOnly: doc.isReadOnly, 
         isLocal: doc.isLocal, 
         mimeType: doc.mimeType, 
         isEncrypted: doc.isEncrypted, 
         IsDecrypted: doc.isDecrypted, 
         metadata: doc.metadata, 
         documentCount: doc.documents.count, 
         pageCount: doc.pages.count 
      }, 
      Documents: [], 
      Pages: [] 
   }; 
   for (var i = 0; i < doc.documents.count; i++) { 
      var childDoc = doc.documents.item(i); 
      var childDocumentOutput = { 
         name: childDoc.name 
      }; 
      output.Documents.push(childDocumentOutput); 
   } 
   for (var pageNumber = 1; pageNumber <= doc.pages.count; pageNumber++) { 
      var docPage = doc.pages.item(pageNumber - 1); 
      var pageOutput = { 
         pageNumber: pageNumber, 
         originalPageNumber: docPage.originalPageNumber, 
         originalDocumentName: docPage.document.name, 
         size: docPage.size 
      }; 
      output.Pages.push(pageOutput); 
   } 
   console.log(JSON.stringify(output, null, 3)); 
} 

Requirements

Target Platforms

Help Version 19.0.2017.10.27
Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Documents Assembly