LEADTOOLS 入门教程: 使用文件观察器转换文件 - C# .NET Core

news2025/7/19 5:01:43

LEADTOOLS 是一个综合工具包的集合,用于将识别、文档、医疗、成像和多媒体技术整合到桌面、服务器、平板电脑、网络和移动解决方案中,是一项企业级文档自动化解决方案,有捕捉,OCR,OMR,表单识别和处理,PDF,打印捕获,归档,注释和显示功能。利用业界领先的图像处理技术,能够智能识别文件,可以用来识别任何类型的扫描或传真形式的图像。

LEADTOOLS 最新下载(qun:731259648)https://www.evget.com/product/782/download

本教程展示了如何使用System.IO.FileSystemWatcher该类在创建目录中的文件时引发事件,以及如何使用DocumentConverter该类将文件转换并保存为可搜索的 PDF 文件格式。

概述
概括本教程介绍如何在 C# .NET Core 控制台应用程序中使用DocumentConverter和System.IO.FileSystemWatcher类将文件转换为可搜索的 PDF。
完成时间30分钟
视觉工作室项目下载教程项目 (2 KB)
平台C# .NET Core 控制台应用程序
集成开发环境视觉工作室 2019、2022
开发许可下载 LEADTOOLS
用另一种语言试试
  • C# :.NET 框架(控制台)、. NET 核心

所需知识

在使用文件观察器转换文件 - C# .NET Core教程之前,通过查看添加引用和设置许可证教程熟悉创建项目的基本步骤。

创建项目并添加 LEADTOOLS 引用

从添加引用和设置许可证教程中创建的项目副本开始。如果您没有该项目,请按照该教程中的步骤创建它。

所需的参考取决于项目的目的。可以通过 NuGet 包添加引用。

本教程需要以下 NuGet 包:

  • Leadtools.Document.Sdk

有关您的应用程序需要哪些 DLL 文件的完整列表,请参阅要包含在您的应用程序中的文件。

设置许可证文件

许可证解锁项目所需的功能。它必须在调用任何工具包函数之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时许可证。

有两种类型的运行时许可证:

  • 评估许可证,在下载评估工具包时获得。它允许评估工具包。
  • 部署许可证。如果需要部署许可证文件和开发人员密钥,请参阅获取许可证。

笔记

添加 LEADTOOLS NuGet 引用和设置许可证在添加引用和设置许可证教程 中有更详细的介绍。

添加 FileSystemWatcher 和 DocumentConverter 代码

创建项目、添加参考和设置许可证后,就可以开始编码了。

解决方案资源管理器中,打开Program.cs。将以下语句添加到using顶部的块中Program.cs。

【C#】

using System;
using System.IO;
using Leadtools;
using Leadtools.Document;
using Leadtools.Document.Converter;
using Leadtools.Document.Writer;
using Leadtools.Ocr;

将以下全局变量添加到Program类中。

【C#】

static string OutputDirectory;
static DocumentConverter docConverter;

在 Main 方法中添加以下代码以初始化OcrEngine、DocumentConverter和FileSystemWatcher对象。

【C#】

static void Main(string[] args)
{
if (args.Length != 1)
{
Console.WriteLine("Usage: Convert-Files-With-a-File-Watcher.exe <directory>");
return;
}

if (!SetLicense())
Console.WriteLine("Error setting license");
else
Console.WriteLine("License file set successfully");

using (IOcrEngine OcrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD))
{
OcrEngine.Startup(null, null, null, @"C:\LEADTOOLS22\Bin\Common\OcrLEADRuntime");

docConverter = new DocumentConverter();
docConverter.SetOcrEngineInstance(OcrEngine, false);
docConverter.SetDocumentWriterInstance(new DocumentWriter());

string watchFolder = args[0];

OutputDirectory = Path.Combine(watchFolder, "ConvertedToPDF");
if (!Directory.Exists(OutputDirectory))
Directory.CreateDirectory(OutputDirectory);

Console.WriteLine($"Watching folder {watchFolder}..");

using (FileSystemWatcher systemWatcher = new FileSystemWatcher())
{
systemWatcher.Path = watchFolder;
systemWatcher.NotifyFilter = NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.DirectoryName;

systemWatcher.Filter = "*.*";

systemWatcher.Created += SystemWatcher_Created;

systemWatcher.EnableRaisingEvents = true;

Console.WriteLine("Press 'q' to quit.");
while (Console.Read() != 'q') ;
}
}
}

笔记

因为IOcrEngine接口实现了IDisposable,所以确保它在using声明中以便正确处理。

创建一个名为 的新方法ConvertFile(string input, string output)。此方法将在FileSystemWatcher.Create事件处理程序内部调用。在新方法中添加以下代码,将指定文件目录中的新文件转换为PDF。

【C#】

private static void ConvertFile(string input, string output)
{
var inputDocument = DocumentFactory.LoadFromFile(input, new LoadDocumentOptions());

DocumentConverterJobData jobData = new DocumentConverterJobData()
{
Document = inputDocument,
OutputDocumentFileName = output,
DocumentFormat = DocumentFormat.Pdf,
};

var job = docConverter.Jobs.CreateJob(jobData);
docConverter.Jobs.RunJob(job);

if (job.Errors.Count > 0)
foreach (var converterJobError in job.Errors)
Console.WriteLine($"Error During Conversion:{converterJobError.Error.Message}");
else
Console.WriteLine($"Converted {input} to PDF. Save location: {output}");
}

创建FileSystemWatcher.Create事件处理程序。将此事件处理程序挂接到Main()方法中,如上所示。将以下代码添加到事件处理程序以收集输入文件路径、创建输出文件路径并调用ConvertFile()上面创建的方法。

【C#】

static void SystemWatcher_Created(object sender, FileSystemEventArgs e)
{
string file = e.FullPath;
string output = Path.Combine(OutputDirectory, Path.ChangeExtension(e.Name, "pdf"));

ConvertFile(file, output);
}

运行项目

需要在Application arguments中指定要添加 File Watcher 的目录。要添加目录,请选择项目 ->特性,然后导航到“调试”选项卡。

一旦指定了要将文件观察器添加到的目录,按F5或选择Debug -> Start Debugging运行项目。

如果正确执行了这些步骤,则会出现控制台,并且应用程序会侦听添加到指定文件目录的任何新文件。添加文件后,应用程序会抓取该文件并将其转换为可搜索的 PDF。

以上便是 使用 AWS Lambda 转换文档 ,如果您还有其他疑问,欢迎咨询我们或者加入我们官方技术交流群。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/36144.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyQt5 QTableWidget

PyQt5 QTableWidgetQTableWidget 示例1QTableWidget 示例2QTableWidget 示例3QTableWidget 示例4QTableWidget 示例5QTableWidget 示例6QTableWidget 示例1 演示QTableWidget控件的基本使用方法 import sys from PyQt5.QtWidgets import (QWidget, QTableWidget, QTableWidge…

The Seven Tools of Causal Inference with Reflections on Machine Learning 文章解读

目录 THE THREE LAYER CAUSAL HIERARCHY. 4 THE SEVEN TOOLS OF CAUSAL INFERENCE (OR WHAT YOU CAN DO WITH A CAUSAL MODEL THAT YOU COULD NOT DO WITHOUT?) 7 Tool 1: Encoding Causal Assumptions – Transparency and Testability. 10 Tool 2: Do-calculus and the …

CentOS 7:dmPython安装及测试连接达梦数据库

python下载地址&#xff1a;Python Source Releases | Python.org 查看数据库服务 dmPython 安装 cd /home/dmdba/dmdbms/drivers/python/dmPython python setup.py install [rootlocalhost dmPython]# python setup.py install running install running bdist_egg running e…

通过Python Pandas分析数据上涨下跌趋势的方法:求离散数据的差分、导数

在实际工作中&#xff0c;我们经常需要分析一组数据的历史走势/趋势情况&#xff0c;比如要从产品数据库中筛选出销量处于上升趋势的产品&#xff0c;或者从股票历史数据库中筛选出一直处于上涨的股票。 那么可以通过分析计算该组数据的差分来模拟求出该组数据走势线的导数&…

Kubernetes CKA 模拟题解析【2022最新版】(连载001)

练习准备 这是 Kubernetes CKA 认证的模拟考试&#xff0c;大家不要错过哦。 在模拟考试开始之前建议您先设置一下以下命令&#xff1a; $ alias kkubectl $ export do"--dry-runclient -o yaml" # like short for dry output. use whatever you like 设置代码补…

Lumion和Enscape渲染器有什么区别?哪个适合你

提到“傻瓜式渲染器”&#xff0c;你的脑子里最先闪过哪个软件名&#xff1f;当一溜子软件名在脑袋里飞快跳转的时候&#xff0c;有没有发现现在很多软件都被打上“傻瓜式渲染器”的标签&#xff1f;那今天咱们就先聊一聊Lumion和Enscape这两个知名软件。 01、软件介绍 Lumio…

DOTA-PEG-麦芽糖 maltose-DOTA 麦芽糖-四氮杂环十二烷四乙酸

DOTA-PEG-麦芽糖 maltose-DOTA 麦芽糖-四氮杂环十二烷四乙酸 PEG接枝修饰麦芽糖&#xff0c;麦芽糖-聚乙二醇-四氮杂环十二烷四乙酸&#xff0c;DOTA-PEG-麦芽糖 中文名称&#xff1a;麦芽糖-四氮杂环十二烷四乙酸 英文名称&#xff1a;maltose-DOTA 别称&#xff1a;DOTA修…

浏览器渲染原理-通俗易懂版本

文章目录浏览器渲染原理前言1. 网页的解析过程2. 浏览器的功能与组成2.1 浏览器内核2.2 进程与线程3. 浏览器渲染流程3.1 渲染引擎解析过程3.2 渲染引擎主要模块4. 渲染页面的详细流程4.1 HTML 解析过程4.2 生成 CSS 规则4.3 构建 Render Tree4.4 布局 (layout) 和绘制 (Paint)…

外观专利怎么申请?

问题一&#xff1a;什么是外观专利&#xff1f; 外观专利跟实用新型专利和发明专利有所不同。实用新型和发明主要保护的技术方案或者方法&#xff0c;配方。而外观专利保护的产品的形状、图案或其结合以及色彩富有美感&#xff0c;并且适用于工业应用的新设计。比如某企业推出…

华为“仓颉”不是中文编程,中文编程早有所属,势如破竹

“中国自己的编程语言究竟在哪里&#xff1f;”关心IT生态的我们&#xff0c;经常深思与担忧。 语言是文化精髓所在&#xff0c;一方水土养一方人&#xff0c;不管是中文&#xff0c;还是英语&#xff0c;作为交流工具&#xff0c;语言烙印着不同地方的生活场景&#xff0c;一方…

[附源码]计算机毕业设计JAVA企业公开招聘系统

[附源码]计算机毕业设计JAVA企业公开招聘系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybati…

Mybatis-plus通过exists判断记录是否存在

Mybatis-plus通过exists判断记录是否存在一、Controller二、Service三、效果一、Controller GetMapping("/queryNewProductExists")public Boolean queryNewProductExists(RequestParam("name") String name) {return opProductService.queryNewProductExi…

开源游戏服务器框架NoahGameFrame(NF)客户端的Log日志系统(五)

一、调用输出日志方法所在的脚本介绍 需要打印日志到文件或者Unity的Console控制台中&#xff0c;就可以调用NFLogModule.cs这个脚本中的方法。由于这个脚本中的方法数量太多&#xff0c;我就不一一介绍了&#xff0c;有需要的可以自己看下具体的实现过程。下面篇幅介绍中作者…

电机与拖动(1)直流电机

磁路中的常用定律 电磁力定律是电动机的理论基础&#xff0c;用左手定则。 电磁感应定律是我们发电机的理论基础&#xff0c;用右手定则 。 与电路的比较&#xff1a; 直流电机 右手定则&#xff1a;伸开右手&#xff0c;使大拇指跟其余四个手指垂直并且都跟手掌在一个平面…

关于WEB端实现电子海图之Openlayers加载切片

记笔记&#xff0c;免忘记&#xff01; 关于WEB端实现电子海图研究之思路 关于WEB端实现电子海图研究二GeoServer GeoServer完成shp文件切矢量图后&#xff0c;我们需要加载GeoServer切片在web上展示。 vector-tiles-tutorial官方示例 以下示例使用openLayers来加载 D:\s…

status_breakpoint谷歌浏览器如何解决?

众所周知&#xff0c;谷歌浏览器是一款非常好用的浏览器软件&#xff0c;但是在使用过程中难免会遇到一些问题&#xff0c;比如status_breakpoint错误代码该怎么办&#xff1f;下面就来看看小编整理的status_breakpoint谷歌浏览器相关内容。 一些可能导致谷歌浏览器status_brea…

【数据结构】堆及堆排序的实现(C语言)

目录 前言 初始化 增删 由一个数组构建堆 堆排序 TOPK问题 前言 我们都知道二叉树是度为 2 的树&#xff0c;如果在一个完全二叉树里&#xff0c;所有的子结点都小于他的父结点&#xff0c;那么它就是堆。这样的堆被称之为大堆&#xff0c;反之则称为小堆。 虽然我们画出…

光学测量精度极限—光谱共焦位移传感器的六大行业应用

科技的不断发展&#xff0c;在半导体&#xff0c;高精密制造领域中都是采用微米及以上的加工工艺&#xff0c;并与之匹配高精度测量技术进行品质控制。光谱共焦的测量原理是一束白光经过镜头将不同的波长聚焦到光轴上&#xff0c;色散地形成一条彩虹状分布带&#xff0c;照射到…

第五章:LockSupport与线程中断

阿里蚂蚁金服面试题什么是线程中断机制&#xff1f;中断相关的 API 方法面试题1、如果停止正在运行的一个线程&#xff1f;2 当前线程的中断标识为true&#xff0c;是不是线程就立刻停止&#xff1f;案例一案例二3、静态方法Thread.interrupted()&#xff0c;谈谈你的理解总结L…

国外服务器采取数据备份和灾难恢复的重要性

在国外服务器的使用中&#xff0c;数据的安全性和完整性是任何组织都不能忽视的问题。丢失数据可能会对业务造成毁灭性的影响&#xff0c;因此必须有一个完善的数据备份和灾难恢复计划。 什么是备份? 备份将数据复制到辅助形式&#xff0c;如存档文件&#xff0c;在灾难发生时…