在数字化办公时代,文档的转换和查看是日常工作中不可或缺的一部分。想象一下,如果原始文档是TIFF格式,将其转换为PDF格式并进行查看、注释和保存,这个过程是否简单?如果需要处理十种不同的文件类型,包括光栅图像和矢量文档,并且工作要求只能在一个应用程序中使用一个查看器控件来完成这项任务,那么这项任务听起来就不再那么简单了。只有能够注释不仅仅是PDF和DOC这样的典型文档文件,还能处理TIFF、JPEG、SVG等格式的查看器,才能胜任这项工作。这个查看器控件必须能够显示基于光栅的图像和基于矢量的文档,并且必须能够在这两种非常不同的图像数据类型之间进行转换。即使是对于最有经验的程序员来说,这也不是一项容易的任务。
LEADTOOLS版本19中新推出的文档转换器和文档查看器不仅使得在同一个控件中查看和注释基于光栅和矢量的文件格式成为可能,而且使得这一过程变得简单。这些独特的框架将满足并超越开发人员创建端到端企业内容管理(ECM)、文档检索和文档标准化解决方案的期望。程序员只需几行代码,就可以实现通常需要数年才能开发的文档转换和查看功能。
文档转换器SDK自动使用LEADTOOLS光栅、SVG和OCR引擎的最佳组合来转换图像和文档,以实现准确性和速度的最佳组合。例如,SVG转换模式可以在不需要额外OCR步骤的情况下,以100%的准确率在任何矢量或文档格式之间进行转换。另一方面,如果转换器检测到光栅图像输入文件,如TIFF或JPEG,它将使用LEADTOOLS Advantage OCR引擎提取文本,然后将其转换为任何支持的文档格式。
转换器使用起来非常简单,只需要选择一些首选项、转换设置,当然还有输入和输出文件。一个基本的对话框,如LEADTOOLS文档转换器演示中包含的对话框,就足够了:
DocumentConverter converter = new DocumentConverter();
// 设置DocumentFactory使用的光栅编解码器以加载文件
DocumentFactory.RasterCodecsTemplate = this.RasterCodecsInstance;
// 设置OCR引擎和文档写入器
converter.SetOcrEngineInstance(this.OcrEngineInstance, false);
converter.SetDocumentWriterInstance(this.DocumentWriterInstance);
// 设置光栅图像文件类型的预处理选项
converter.Preprocessor.Deskew = this.PreprocessingDeskew;
converter.Preprocessor.Invert = this.PreprocessingInvert;
converter.Preprocessor.Orient = this.PreprocessingOrient;
// 设置加载文档选项和缓存
var loadDocumentOptions = new LoadDocumentOptions();
loadDocumentOptions.UseCache = DocumentFactory.Cache != null;
converter.LoadDocumentOptions = loadDocumentOptions;
// 设置选项
converter.Options.EnableSvgConversion = this.EnableSvgConversion;
converter.Diagnostics.EnableTrace = this.EnableTrace;
// 创建作业
var jobData = new DocumentConverterJobData {
InputDocumentFileName = document == null ? this.InputDocumentFileName : null,
Document = document,
InputDocumentFirstPageNumber = this.InputFirstPage,
InputDocumentLastPageNumber = this.InputLastPage,
DocumentFormat = this.DocumentFormat,
OutputDocumentFileName = this.OutputDocumentFileName,
AnnotationsMode = this.OutputAnnotationsMode,
JobName = this.JobName,
UserData = null,
};
var job = converter.Jobs.CreateJob(jobData);
// 运行作业
converter.Jobs.RunJob(job);
在文档格式之间进行转换时,SVG模式可以实现更快的速度以及100%的准确率,而不需要OCR。转换器能够处理具有不同字体、颜色、图像等的复杂文档。正如下面的比较所示,左侧的源Word文档包含了所有这些特性,以及一些超链接和Unicode日文文本,所有这些都被准确地转换为PDF。
LEADTOOLS文档查看器是一个OEM就绪的文档查看解决方案,用于创建具有丰富文档查看功能的健壮、功能完备的应用程序,包括可搜索的文本、注释、内存高效的分页、惯性滚动和无限缩放的矢量显示。在后台,它自动使用文档转换器按需将任何文档、矢量或光栅图像文件标准化为SVG,使得在单个应用程序中查看、搜索和注释所有文件类型成为可能。
文档查看器是完全可定制的,由五个组件组成,可以启用或禁用这些组件,并将它们放置在布局的任何位置。
简单地使用通用容器(例如HTML ,.NET Panel
)建立UI布局,然后根据需要将文档查看器组件添加到每个容器中。
首先,在HTML中创建布局:
<!-- View -->
<div id="view">
</div>
<!-- Thumbnails -->
<div id="thumbnails">
</div>
然后使用JavaScript初始化查看器及其组件:
window.onload = function () {
// 创建文档查看器,使用DIV元素
var createOptions = new lt.Documents.UI.DocumentViewerCreateOptions();
createOptions.viewContainer = document.getElementById("view");
createOptions.thumbnailsContainer = document.getElementById("thumbnails");
var documentViewer = lt.Documents.UI.DocumentViewerFactory.createDocumentViewer(createOptions);
// 加载PDF文档
var factory = new lt.Documents.DocumentFactory();
var loadDocumentCommand = lt.Documents.LoadDocumentCommand.create(factory, "http://demo.leadtools.com/images/pdf/leadtools.pdf");
var prom = loadDocumentCommand.run().done(function (document) {
// 准备,设置查看器
documentViewer.setDocument(document);
});
// 现在设置一些选项,不是必需的
documentViewer.view.preferredItemType = lt.Documents.UI.DocumentViewerItemType.svg;
documentViewer.commands.run(lt.Documents.UI.DocumentViewerCommands.interactivePanZoom);
};
对于.NET应用程序,可以按照相同的程序进行操作。要么在设计模式下创建布局,要么以编程方式添加对象。
// 创建应用程序的UI
var splitContainer = new SplitContainer { Dock = DockStyle.Fill };
this.Controls.Add(splitContainer);
// 使用System.Windows.Forms.SplitterPanel的面板创建文档查看器
var createOptions = new Leadtools.Documents.UI.DocumentViewerCreateOptions();
createOptions.ViewContainer = splitContainer.Panel2;
createOptions.ThumbnailsContainer = splitContainer.Panel1;
var documentViewer = DocumentViewerFactory.CreateDocumentViewer(createOptions);
// 加载PDF文档
var document = DocumentFactory.LoadFromUri(
new Uri("http://demo.leadtools.com/images/pdf/leadtools.pdf"),
new Leadtools.Documents.LoadDocumentOptions { UseCache = false }
);
// 准备,设置查看器
documentViewer.SetDocument(document);
// 现在设置一些选项,不是必需的
documentViewer.View.PreferredItemType = DocumentViewerItemType.Svg;
documentViewer.Commands.Run(DocumentViewerCommands.InteractivePanZoom);
使用LEADTOOLS,可以在单个应用程序中使用单个查看器控件转换和查看数百种文档、矢量和光栅图像文件类型,这只是可以使用LEADTOOLS解决的众多现实世界问题之一。它的最先进的文档查看器和文档转换器框架使得创建动态且功能完备的文档查看解决方案成为可能。