封装多页文档,支持光栅和SVG图像、书签、注释和文本数据。
[DataContractAttribute ()]公共摘要类LEADDocument: IDisposable
的LEADDocument类为任何类型的文档提供统一的支持。它背后的实际数据可以是PDF文档、Microsoft Word文档、TIFF图像、AutoCAD DWG绘图,或者数百种不同的栅格、文档或矢量中的任何一种LEADTOOLS支持的文件格式.LEADDocument封装使用相同的属性、方法和数据结构统一访问此数据所需的通用功能。
LEADDocument的输入主题是,它可用于查看文档及其页面,包括缩略图、虚拟化、文本搜索和注释支持。
LEADDocument也可以用作输入DocumentConverter,将文件转换为任何其他文件格式,无论是否使用OCR技术。
一个LEADDocumentInstance可以通过以下任何一种方法获得:
| 方法 | 描述 |
|---|---|
| DocumentFactory。LoadFromFile | 从磁盘或网络共享上的现有文档文件创建一个新实例。 |
| DocumentFactory。LoadFromUri | 从存储在远程URL中的文档创建一个新实例。 |
| DocumentFactory。LoadFromUriAsync | 从存储在远程URL或磁盘上的文档异步创建新实例。 |
| DocumentFactory。LoadFromUriAsync | 从存储在远程URL中的文档异步创建新实例。 |
| DocumentFactory。LoadFromStream | 从存储在流中的现有文档创建一个新实例。 |
| DocumentFactory。LoadFromCache | 从缓存加载以前保存的文档。 |
| DocumentFactory。创建 | 创建一个新的空文档。 |
获取文件后,InternalObject将是文档使用的内部LEADTOOLS对象。
在大多数情况下LEADDocument在得到它之后就可以使用了。但是,有些文档(如PDF)可以加密,在解析和使用之前需要密码。的大多数性质和方法LEADDocument如果文档未解密,将抛出错误。IsEncrypted可用于检查文档是否加密,如果是,解密必须用从用户获得的密码调用以解锁文档。当这种情况发生时,的价值IsDecrypted就变成了真正的文档已经准备好可以使用了。
请注意,IsEncrypted将保持真正的表示文档的原始状态。
的SaveToFile而且SaveToUri方法可用于将文档保存到磁盘文件或远程URL。这些方法支持将文档保存为光栅图像格式,而不是文档。方法对文档进行转换,在大多数情况下都应使用DocumentConverter类,它具有更多的选项和控制。
每个文档都有一个由框架在创建时设置的唯一标识符。它存储在DocumentId财产。当在缓存系统中使用文档时,ID很重要。ID是从缓存中完全重新构建文档所需的惟一值。
方法可以由用户手动设置文档IDLoadDocumentOptions。DocumentId,CreateDocumentOptions。DocumentId,或UploadDocumentOptions。DocumentId在加载、创建或上传文档时使用的选项。如果DocumentId留给零,工厂将生成一个新的随机ID,并使用DocumentFactory。NewCacheId.
文档可以包含许多页面和大量数据。在大多数情况下,将所有这些数据存储在物理内存中是不可行的。因此,LEADDocument类设计为使用外部缓存系统来存储修改后的数据。指DocumentFactory。缓存更多信息。
HasCache确定此文档是否正在使用缓存系统。调用SaveToCache将文档保存到缓存中并使用DocumentFactory。LoadFromCache.AutoDeleteFromCache而且AutoSaveToCache可用于确定在处理文档时与文档关联的缓存数据会发生什么。
DocumentStructure管理文档的结构。这个结构包括表示目录的书签。通过结构的属性LEADDocument.
DocumentPages管理文档的页面。通过页面的属性LEADDocument.
DocumentPages来源于LeadCollection < T >因此可以实现System.Collections.ObjectModel.Collection.您可以使用任何集合方法来添加、删除、插入、获取、设置和遍历页面。
DocumentPages包含的集合DocumentPage对象,每个对象包含文档中单个页面的数据。页面项是在查看器或转换应用程序中使用文档的主要入口点。DocumentPage包含检索或更新页面的栅格或SVG图像、文本数据、注释和超链接的函数。指DocumentPage更多信息。
DocumentDocuments管理文档的子文档。通过文档的属性LEADDocument.
DocumentDocuments来源于LeadCollection < T >因此可以实现System.Collections.ObjectModel.Collection.您可以使用任何收集方法来遍历文档。但是,此集合是只读的,因此不能添加、删除或更改项。相反,使用页面向此文档添加或删除属于单独文档的页面。的LEADDocument。文档集合将自动更新,以反映文档中当前保存的子文档。
可以启用和访问文档修改历史和跟踪DocumentHistory对象。可以通过历史的属性LEADDocument.
类添加的默认值包含元数据DocumentFactory当加载或创建文档时,以及从文档文件本身提取的任何其他数据(如作者、主题和其他应用程序存储的任何关键字)。
下面的属性是LEADDocument并包含有用的信息:
对原始文档数据的访问取决于文档的创建方式及其缓存状态,如下所示:
的结果LoadFromFile:GetDocumentFileName将包含传递给方法的文件的原始名称。GetDocumentStream将返回零.
的结果LoadFromUri当不使用缓存时:GetDocumentFileName将返回用于存储数据的临时文件的名称。
的结果LoadFromUri当使用缓存时:如果缓存支持外部资源(磁盘访问),那么GetDocumentFileName将包含磁盘中保存缓存项的文件的名称。如果缓存不支持外部资源(磁盘访问),则GetDocumentFileName将返回零,GetDocumentStream将返回可用于访问数据的有效只读流。
的结果LoadFromCache (ObjectCache字符串):缓存的使用是自然的和相同的规则LoadFromUri适用。
的LEADDocument类包含以下对象,用于管理整个文档中使用的全局设置。
LEADDocument所有物品都使用1/720英寸的独立单位。该值存储在UnitsPerInch常数(720)。指文献库坐标系统更多信息。
LEADDocument实现了系统。IDisposable而且必须在使用后处理掉。指系统。IDisposable在. net中获取更多信息。如果文档被保存到缓存中,则可以在它被处理后重新构造文档(AutoSaveToCache被设定为真正的,或SaveToCache使用)。
这个示例加载一个文档并显示其所有信息。
使用Leadtools;使用Leadtools.Codecs;使用Leadtools.Document.Writer;使用Leadtools.Document;使用Leadtools.Caching;使用Leadtools.Annotations.Engine;使用Leadtools.Ocr;使用Leadtools.Barcode;使用Leadtools.Document.Converter;公共无效DocumentExample (){var缓存= GetCache();var政策=新CacheItemPolicy ();政策。一个bsoluteExpiration = DateTime.Now +新TimeSpan(0,0,1);政策。SlidingExpiration =新TimeSpan(0,0,1);var选择=新LoadDocumentOptions ();选项。缓存Policy = policy;选项。缓存= cache;字符串documentId =零;使用(vardocument = DocumentFactory.LoadFromFile(Path.Combine(LEAD_VARS.ImagesDir),“Leadtools.pdf”),选择){文档。一个utoDeleteFromCache =假;PrintOutDocumentInfo(文档);documententid = document. documententid;document.SaveToCache ();}System.Threading.Thread.Sleep (2000);varloadFromCacheOptions =新LoadFromCacheOptions ();loadFromCacheOptions。Cache = Cache;loadFromCacheOptions。DocumentId= documentId;使用(vardocument = documentfactory . loadFromCacheOptions)){如果(零= =文档){控制台。WriteLine (“缓存的文档已过期并已删除!”);}}}公共无效PrintOutDocumentInfo (LEADDocument文档){控制台。WriteLine (“一般”);控制台。WriteLine (DocumentId:“+ document.DocumentId);如果(文档。Uri ! =零)控制台。WriteLine (”Uri:“+ document.Uri);控制台。WriteLine (名称:“+ document.Name);控制台。WriteLine (”CacheStatus:“+ document.CacheStatus);控制台。WriteLine (”LastCacheSyncTime:“+ document.LastCacheSyncTime);控制台。WriteLine (”IsReadOnly:“+ document.IsReadOnly);控制台。WriteLine (”IsLocal:“+ document.IsLocal);控制台。WriteLine (MimeType:“+ document.MimeType);控制台。WriteLine (”IsEncrypted:“+ document.IsEncrypted);控制台。WriteLine (”IsDecrypted:“+ document.IsDecrypted);控制台。WriteLine (“用户数据:“+ document.UserData);控制台。WriteLine (“缓存”);控制台。WriteLine (”HasCache:“+ document.HasCache);控制台。WriteLine (”AutoDeleteFromCache:“+ document.AutoDeleteFromCache);控制台。WriteLine (“元数据”);foreach(var项在document.Metadata)控制台。WriteLine (“{0}{1}”,项目。键,item.Value);控制台。WriteLine (“文件”);控制台。WriteLine (“数:”+ document.Documents.Count);foreach(varchildDocument在document.Documents){控制台。WriteLine (名称:“+ childDocument.Name);}控制台。WriteLine (“页面”);控制台。WriteLine (“数:”+ document.Pages.Count);为(varpageNumber = 1;pageNumber <= document.Pages.Count;pageNumber + +){var页面=文档。页面[pageNumber - 1];控制台。WriteLine (”PageNumber:“+ pageNumber);控制台。WriteLine (”OriginalPageNumber:“+ page.OriginalPageNumber);控制台。WriteLine (”OriginalDocumentName:“+ page.Document.Name);控制台。WriteLine (“大小:{0}”, page.Size);}控制台。WriteLine ("--------");}公共ObjectCache GetCache (){//创建一个LEADTOOLS FileCache对象varcacheDir = Path.Combine(“缓存”);如果(Directory.Exists (cacheDir))目录中。删除(cacheDir,真正的);Directory.CreateDirectory (cacheDir);var缓存=新FileCache ();缓存。缓存Directory = cacheDir;返回缓存;}静态类LEAD_VARS{公共常量字符串ImagesDir =@“C: \ LEADTOOLS22 \ Resources \图片”;}静态类LEAD_VARS{公共常量字符串ImagesDir =@“C: \ LEADTOOLS22 \ Resources \图片”;}