Controls how to handle the embedded attachments found in the document during loading.
Object.defineProperty(LoadDocumentOptions.prototype, 'loadAttachmentsMode',get: function(),set: function(value))
loadAttachmentsMode: DocumentLoadAttachmentsMode;
Value that indicates how to handle the embedded attachments found in the document during loading, as follows:
| Value | Description |
|---|---|
| DocumentLoadAttachmentsMode.none | Do not read embedded attachments. This is the default value. |
| DocumentLoadAttachmentsMode.asAttachments | Embedded attachments are read and if any are found, set in the LEADDocument.attachments collection. |
The default value is DocumentLoadAttachmentsMode.none.
For more information, refer to Document Attachments.
import { DocumentHelper } from "../../utilities/DocumentHelper";import { DocumentFactory_CheckCacheInfoExample } from "../Factory/CheckCacheInfo";export class DocumentAttachment_MainExample {private el: HTMLElement;public constructor() {lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null);DocumentHelper.initFactory();}private urlToPdfFile = "http://localhost/images/pdf/portfolio/port1.pdf";public run(buttonID: string) {document.getElementById(buttonID).onclick = this.onRun;}onRun = () => {/*The PDF document can be one of the following:1. Normal PDF without attachments. Has one or more pages and no attachments.2. Normal PDF with attachments. Has one or more pages and one or more attachments.3. PDF Portfolio. Has a placeholder page and one or more attachments.The value of LoadDocumentOptions.loadAttachmentsMode affects loading the documents as follows:1. Normal PDF without attachments: Will not be affected.2. Normal PDF with attachments: Number of pages is not affected.Number of attachments is:LoadAttachmentsMode = none then 0LoadAttachmentsMode = asAttachments then number of attachments found in the document.3. PDF Portfolio: Number of pages is:LoadAttachmentsMode = none then 1 (the placeholder page)LoadAttachmentsMode = asAttachments then 0 (the document has no pages).Number of attachments is:LoadAttachmentsMode = none then 0LoadAttachmentsMode = asAttachments then number of attachments found in the document.*/const pdfUrl = this.urlToPdfFile; // URL to a PDF file as an input to this example// First, load the document without attachmentsconsole.log("Loading with DocumentLoadAttachmentsMode.none");const loadDocumentOptions = new lt.Document.LoadDocumentOptions();loadDocumentOptions.loadAttachmentsMode = lt.Document.DocumentLoadAttachmentsMode.none;this.loadDocument(pdfUrl, loadDocumentOptions, (doc) => {console.log("Document has " + doc.pages.count + " pages");// Find out if the document is portfolioconst isPortfolioValue = doc.metadata[lt.Document.LEADDocument.metadataKey_IsPortfolio];const isPortfolio = isPortfolioValue && isPortfolioValue.toLowerCase() === "true";console.log("isPortfolio:" + isPortfolio);// Check that everything is as expected// We should have 0 attachments since we did not instruct the toolkit to load theseif (doc.attachments.count != 0) throw new Error("Something went wrong");// We should have one or more pages regardless of whether the document is PDF portfolioif (doc.pages.count === 0) throw new Error("Something went wrong");// Next, load the document with attachmentsconsole.log("Loading with DocumentLoadAttachmentsMode.asAttachments");loadDocumentOptions.loadAttachmentsMode = lt.Document.DocumentLoadAttachmentsMode.asAttachments;this.loadDocument(pdfUrl, loadDocumentOptions, (doc) => {console.log("Document has " + doc.pages.count + " pages");// Find out if the document is portfolioconst isPortfolioValue = doc.metadata[lt.Document.LEADDocument.metadataKey_IsPortfolio];const isPortfolio = isPortfolioValue && isPortfolioValue.toLowerCase() === "true";console.log("isPortfolio:" + isPortfolio);// Check that everything is as expected// We may have 0 or more attachments depending on the fileconsole.log("Document has " + doc.attachments.count + " attachments");// We should have one or more pages unless this is PDF portfolio, then it will have 0 pagesif (isPortfolio) {if (doc.pages.count !== 0) throw new Error("Something went wrong");}// Extract all the embedded attachments into the cachethis.extractAttachments(doc, 0, () => {console.log("Example done");});});});}loadDocument = (url: string, loadDocumentOptions: lt.Document.LoadDocumentOptions, done: (doc: lt.Document.LEADDocument) => void) => {DocumentHelper.log("Loading document " + url);lt.Document.DocumentFactory.loadFromUri(url, loadDocumentOptions).done((doc) => {DocumentHelper.log("Document loaded and has cache id: " + doc.documentId);done(doc);}).fail(DocumentHelper.showServiceError);}extractAttachments = (doc: lt.Document.LEADDocument, attachmentIndex: number, done: () => void) => {if (attachmentIndex >= doc.attachments.count) {done();return;}// Show info on this attachmentconst attachment = doc.attachments.item(attachmentIndex);console.log("Attachment number " + attachment.AttachmentNumber + "file name is '" + attachment.fileName +"' and length is " + attachment.fileLength + " bytes");// Save it into the cache// Another option is to load it directly using lt.Document.DocumentFactory.loadDocumentAttachment to load it as a LEAD documentconst saveAttachmentToCacheOptions = new lt.Document.SaveAttachmentToCacheOptions();saveAttachmentToCacheOptions.attachmentNumber = attachmentIndex + 1;lt.Document.DocumentFactory.saveAttachmentToCache(doc, null, saveAttachmentToCacheOptions).done((attachmentDocumentId) => {console.log("attachment " + saveAttachmentToCacheOptions.attachmentNumber + " saved into the cache with document ID = " + attachmentDocumentId);// The attachment data can be downloaded using lt.Document.DocumentFactory.downloadDocumentData or loaded using DocumentFactory.loadFromCachethis.extractAttachments(doc, attachmentIndex + 1, done);}).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);elseconsole.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";import { DocumentFactory_CheckCacheInfoExample } from "../Factory/CheckCacheInfo";export class DocumentAttachment_MainExample {constructor() {lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null);DocumentHelper.initFactory();}urlToPdfFile = "http://localhost/images/pdf/portfolio/port1.pdf";run = (buttonID) => {document.getElementById(buttonID).onclick = this.onRun;}onRun = () => {/*The PDF document can be one of the following:1. Normal PDF without attachments. Has one or more pages and no attachments.2. Normal PDF with attachments. Has one or more pages and one or more attachments.3. PDF Portfolio. Has a placeholder page and one or more attachments.The value of LoadDocumentOptions.loadAttachmentsMode affects loading the documents as follows:1. Normal PDF without attachments: Will not be affected.2. Normal PDF with attachments: Number of pages is not affected.Number of attachments is:LoadAttachmentsMode = none then 0LoadAttachmentsMode = asAttachments then number of attachments found in the document.3. PDF Portfolio: Number of pages is:LoadAttachmentsMode = none then 1 (the placeholder page)LoadAttachmentsMode = asAttachments then 0 (the document has no pages).Number of attachments is:LoadAttachmentsMode = none then 0LoadAttachmentsMode = asAttachments then number of attachments found in the document.*/const pdfUrl = this.urlToPdfFile; // URL to a PDF file as an input to this example// First, load the document without attachmentsconsole.log("Loading with DocumentLoadAttachmentsMode.none");const loadDocumentOptions = new lt.Document.LoadDocumentOptions();loadDocumentOptions.loadAttachmentsMode = lt.Document.DocumentLoadAttachmentsMode.none;this.loadDocument(pdfUrl, loadDocumentOptions, (doc) => {console.log("Document has " + doc.pages.count + " pages");// Find out if the document is portfolioconst isPortfolioValue = doc.metadata[lt.Document.LEADDocument.metadataKey_IsPortfolio];const isPortfolio = isPortfolioValue && isPortfolioValue.toLowerCase() === "true";console.log("isPortfolio:" + isPortfolio);// Check that everything is as expected// We should have 0 attachments since we did not instruct the toolkit to load theseif (doc.attachments.count != 0) throw new Error("Something went wrong");// We should have one or more pages regardless of whether the document is PDF portfolioif (doc.pages.count === 0) throw new Error("Something went wrong");// Next, load the document with attachmentsconsole.log("Loading with DocumentLoadAttachmentsMode.asAttachments");loadDocumentOptions.loadAttachmentsMode = lt.Document.DocumentLoadAttachmentsMode.asAttachments;this.loadDocument(pdfUrl, loadDocumentOptions, (doc) => {console.log("Document has " + doc.pages.count + " pages");// Find out if the document is portfolioconst isPortfolioValue = doc.metadata[lt.Document.LEADDocument.metadataKey_IsPortfolio];const isPortfolio = isPortfolioValue && isPortfolioValue.toLowerCase() === "true";console.log("isPortfolio:" + isPortfolio);// Check that everything is as expected// We may have 0 or more attachments depending on the fileconsole.log("Document has " + doc.attachments.count + " attachments");// We should have one or more pages unless this is PDF portfolio, then it will have 0 pagesif (isPortfolio) {if (doc.pages.count !== 0) throw new Error("Something went wrong");}// Extract all the embedded attachments into the cachethis.extractAttachments(doc, 0, () => {console.log("Example done");});});});}loadDocument = (url, loadDocumentOptions, done) => {DocumentHelper.log("Loading document " + url);lt.Document.DocumentFactory.loadFromUri(url, loadDocumentOptions).done((doc) => {DocumentHelper.log("Document loaded and has cache id: " + doc.documentId);done(doc);}).fail(DocumentHelper.showServiceError);}extractAttachments = (doc, attachmentIndex, done) => {if (attachmentIndex >= doc.attachments.count) {done();return;}// Show info on this attachmentconst attachment = doc.attachments.item(attachmentIndex);console.log("Attachment number " + attachment.AttachmentNumber + "file name is '" + attachment.fileName +"' and length is " + attachment.fileLength + " bytes");// Save it into the cache// Another option is to load it directly using lt.Document.DocumentFactory.loadDocumentAttachment to load it as a LEAD documentconst saveAttachmentToCacheOptions = new lt.Document.SaveAttachmentToCacheOptions();saveAttachmentToCacheOptions.attachmentNumber = attachmentIndex + 1;lt.Document.DocumentFactory.saveAttachmentToCache(doc, null, saveAttachmentToCacheOptions).done((attachmentDocumentId) => {console.log("attachment " + saveAttachmentToCacheOptions.attachmentNumber + " saved into the cache with document ID = " + attachmentDocumentId);// The attachment data can be downloaded using lt.Document.DocumentFactory.downloadDocumentData or loaded using DocumentFactory.loadFromCachethis.extractAttachments(doc, attachmentIndex + 1, done);}).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);elseconsole.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</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.Main();example.run("exampleButton");};</script></html>
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
