方法突出显示已加载文档中的单词DocumentAnalyzer
类,根据JSON规则集,在WPF c#应用程序。
概述 | |
---|---|
总结 | 本教程介绍如何在c# Windows WPF应用程序中使用LEADTOOLS文档分析器。 |
完成时间 | 30分钟 |
Visual Studio项目 | 下载教程项目(9kb) |
平台 | WPF c#应用程序 |
IDE | Visual Studio 2017, 2019 |
开发许可 | 下载LEADTOOLS |
步骤熟悉创建项目的基本步骤添加引用和设置License而且在文档查看器中显示文件教程,在工作之前用文档分析器高亮单词- WPF c#教程。
中创建的项目的副本开始在文档查看器中显示文件教程。如果您没有该项目,请按照该教程中的步骤创建它。
所需要的参考资料取决于项目的目的。引用可以通过以下两种方法中的一种添加(但不能同时添加)。
如果使用NuGet引用,本教程需要以下NuGet包:
Leadtools.Annotations.Wpf
Leadtools.Document.Viewer.Wpf
如果使用本地DLL引用,则需要以下DLL。dll位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64
:
Leadtools.Annotations.Automation.dll
Leadtools.Annotations.Engine.dll
Leadtools.Annotations.Wpf.dll
Leadtools.Document.Analytics.dll
Leadtools.Document.Unstructured.dll
Leadtools.Ocr.dll
有关特定特性需要哪些dll的完整列表,请参阅在你的申请中包含的文件.
许可证解锁项目所需的特性。它必须在调用任何工具箱函数之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时License.
有两种类型的运行时许可证:
请注意
中详细介绍了添加LEADTOOLS NuGet和本地引用以及设置许可添加引用和设置License教程。
中创建的项目、添加的引用、许可集和代码在文档查看器中显示文件教程添加,编码可以开始。
在解决方案资源管理器,打开MainWindow.xaml
.中使用下面的代码MainWindow.xaml
部分添加分析菜单项的下面<菜单项名称= " _fileLoad
标签。
<MenuItem Name="_fileAnalyze" Header="Analyze" Click="_fileAnalyze_Click"/>
右键单击设计窗口
并选择视图代码
,或按F7,以显示表单背后的代码。将下列语句添加到使用
顶部的块:
//在顶部使用块
使用System.Collections.Generic;
使用Leadtools.Annotations.Engine;
使用Leadtools.Annotations.Automation;
使用Leadtools.Annotations.Wpf;
使用Leadtools.Document.Data;
使用Leadtools.Document.Analytics;
使用Leadtools.Document.Unstructured;
在InitDocumentViewer ()
方法,改变UseAnnotations
价值真正的
.它看起来应该如下所示:
私人无效InitDocumentViewer ()
{
varcreateOptions =新DocumentViewerCreateOptions
{
//设置文档查看器显示的UI部分
ViewContainer = _centerGrid,
//设置显示缩略图的UI部分
ThumbnailsContainer = _thumbnailsTabPageGrid,
//启用使用注释
UseAnnotations =真正的
};
//现在创建查看器
docViewer = DocumentViewerFactory.CreateDocumentViewer(createOptions);
docViewer.View.ImageViewer.Background = SystemColors.AppWorkspaceBrush;
docViewer.View.ImageViewer.Zoom (ControlSizeMode。FitAlways, 1, docViewer.View.ImageViewer.DefaultZoomOrigin);
docViewer.Thumbnails.ImageViewer.Background = SystemColors.ControlDarkDarkBrush;
缓存=新FileCache
{
CacheDirectory =路径。GetFullPath (@”。\ CacheDir”),
};
}
的底部添加以下代码行InitDocumentViewer ()
方法初始化自动化管理而且自动化管理助手.
varautomationManager = documentViewer.Annotations.AutomationManager;
varautomationManagerHelper =新AutomationManagerHelper (automationManager);
添加下面的两行_fileLoad_Click
事件处理程序OpenFileDialog声明。的文件中加载PDF文档C: \ LEADTOOLS22 \ \图片资源\ \非结构化形式
目录中。
OpenFileDialog ofd =新OpenFileDialog
{
InitialDirectory =@“C: \ LEADTOOLS22 \资源\图片\ \非结构化形式”,
过滤器=“PDF文件| * . PDF”,
};
中使用下面的代码_fileAnalyze_Click
事件处理程序,使用户能够加载JSON规则集。方法使用该规则集DocumentAnalyzer
识别相关单词并标出重点。
私人无效_fileAnalyze_Click (对象发送者,RoutedEventArgs
{
字符串规则集=零;
如果(virtualDocument.Pages。计数> 0)
{
//加载JSON规则集
OpenFileDialog openRuleset =新OpenFileDialog
{
InitialDirectory =@“C: \ LEADTOOLS22 \资源\图片\ \非结构化形式”,
过滤器="规则集JSON文件(*.json)|*.json",
};
varresultDlg = openrulset . showdialog ();
如果(resultDlg。HasValue && resultdld . value)
规则集= open规则集. filename;
如果(规则集! =零)
{
试一试
{
//创建分析器
DocumentAnalyzer分析器=新DocumentAnalyzer ()
{
读者=新UnstructuredDataReader (),
QueryContext =新FileRepositoryContext(规则集)
};
//添加操作以突出显示结果
ActionElementSet actions =新ActionElementSet ();
actions.ActionElements.Add (新MyHighlightAction (docViewer));
documentanalyzerrunnoptions options =新DocumentAnalyzerRunOptions ()
{
ElementQuery =新RepositoryQuery (),
Actions = Actions
};
docViewer.BeginUpdate ();
//运行分析器
var结果=分析器。运行(virtualDocument、期权);
docViewer.EndUpdate ();
}
抓(LeadtoolsException练习)
{
MessageBox.Show (ex.Message);
}
}
}
其他的
对话框。显示(“先加载文档”);
}
使用下面的代码添加for的实现MyHighlightAction
,即对所得到的结果进行处理DocumentAnalzyer
属性中的每个识别项对应的突出显示注释对象主题是
.类中的独立类MainWindow.xaml.cs
文件和应放在外面主窗口
类块。
公共类MyHighlightAction: HighlightAction
{
私人主题是docViewer;
公共MyHighlightAction(主题是主题是)
{
Id =“HIGHLIGHT_DOCUMENT”;
docViewer = documentViewer;
}
公共覆盖无效运行(LEADDocument文档,IList
results) {
对话框。显示($"文档分析完成:{(结果。计数> 0 ?results[0].Items.Count.ToString(): "没有")}匹配成功。");
//添加编校注释
过程(文档,结果);
}
私人无效进程(LEADDocument文档,IList
结果) {
foreach(ElementSetResult setResult在结果)
foreach(ElementResult项在setResult.Items)
foreach(LeadRect resultRect在item.ListOfBounds)
{
varautomation = docViewer.Annotations.Automation;
如果(自动化! =零)
{
varpageContainer =自动化. containers[项目。PageNumber - 1];
AnnHiliteObject annHighlight =新AnnHiliteObject ();
annHighlight.Points.Add (resultRect.ToLeadRectD () .TopLeft);
annHighlight.Points.Add (resultRect.ToLeadRectD () .TopRight);
annHighlight.Points.Add (resultRect.ToLeadRectD () .BottomRight);
annHighlight.Points.Add (resultRect.ToLeadRectD () .BottomLeft);
pageContainer.Children.Add (annHighlight);
automation.Invalidate (LeadRectD.Empty);
automation.InvokeAfterObjectChanged (pageContainer。孩子,AnnObjectChangedType.Added);
如果(docViewer。缩略图! =零)
docViewer.Thumbnails.ImageViewer.InvalidateItemByIndex (0);
}
}
}
}
按下运行项目F5,或选择调试->开始调试.
如果正确地执行了这些步骤,应用程序将运行并显示许可证已正确设置。要进行测试,请遵循以下步骤:
点击文件->开放我们来看看OpenFileDialog.
选择该文件,它将被加载到主题是.
点击文件->分析我们来看看OpenFileDialog再一次。
选择与查看器中加载的文档相匹配的JSON规则集,然后单击开放.应用程序将搜索与规则集匹配的值并突出显示它们。
若要在本教程中使用示例,请使用1040年ez.pdf
和1040年ez.json
规则集位于这里:C: \ LEADTOOLS22 \ \图片资源\ \非结构化形式
在本教程中,我们介绍了如何使用JSON规则集文件DocumentAnalyzer
类来处理加载的文档并实现HighlightAction
类来绘制AnnHiliteObject
中的每个匹配结果主题是.