使用AWSλ- c#转换文档。net核心

本教程展示了如何设置为使用AWSλLEADTOOLS SDK和。net核心转换文档。

概述
总结 本教程介绍了如何设置使用AWSλLEADTOOLS SDK文档转换和。net核心。
完成时间 60分钟
Visual Studio项目 下载教程项目(774 KB)
平台 AWSλ。net核心应用程序
IDE Visual Studio 2019中,2022年,AWSλVisual Studio扩展
开发许可 下载LEADTOOLS

所需的知识

熟悉基本的步骤创建一个项目的审查添加引用和设置一个许可证教程,在工作之前使用AWSλ- c#转换文档。net核心教程。

Visual Studio的AWS设置完成

建立开发环境在Visual studio中使用AWS,完成以下2从亚马逊教程:

这些教程完成后,Visual Studio应该安装AWS工具包和一个基本的了解如何创建一个新的AWSλ为。net项目核心和发布AWS应该获得的。

创建一个空的函数

在Visual Studio中,创建一个新的项目(AWSλ。网络核心- C #)项目。为项目指定一个名称和位置并单击创建

选择一个空函数并点击好吧

添加LEADTOOLS引用

的引用需要取决于项目的目的。对于这个项目,以下需要NuGet包:

右键单击的c#项目解决方案资源管理器并选择管理NuGet包……

浏览LEADTOOLS,然后选择Leadtools.Document.SdkNuGet包和安装它。接受领导的最终用户许可协议。

对于一个完整的列表的编解码器dll需要特定的格式,请参考文件格式的支持

添加LEADRequest。计算机科学类

右键单击并选择c#项目添加,然后。它的名字LEADRequest.cs并点击添加

添加以下的使用布洛克:

c#
使用Leadtools.Document.Writer;

将下面的代码复制到添加所需的功能类:

c#
公共LEADRequest{公共字符串InputUrl {得到;;}公共DocumentFormat DocumentFormat {得到;;}公共LEADRequest (){}}

添加LEADLambdaHandler类

右键单击并选择c#项目添加,然后。它的名字LEADLambdaHandler.cs并点击添加

在新类中,添加以下的使用布洛克:

c#
使用系统;使用System.Diagnostics;使用先;使用System.Net.Http;使用Amazon.Lambda.Core;使用Leadtools;使用Leadtools.Document;使用Leadtools.Document.Converter;使用Leadtools.Document.Writer;使用Leadtools.Ocr;

将下面的代码复制到添加所需的功能类:

c#
公共LEADLambdaHandler{/ /全局变量IOcrEngine ocrEngine;DocumentConverter DocumentConverter;静态HttpClient HttpClient =HttpClient ();/ /构造函数处理所有初始化以确保功能尽可能快的一次热身公共LEADLambdaHandler (){InitEnvironment ();平台。LibraryPath =“/ opt / native-runtimes /”;InitLEADTOOLS ();}/ /方法初始化的λ环境使用的LEADTOOLS SDK无效InitEnvironment (){/ /设置LD_LIBRARY_PATH控制台的功能包括:/ / /var/lang/lib: / lib64: / usr / lib64: / var /运行时:/ var /运行/ lib: / var /任务:/ var / lib /任务:/ opt / lib / tmpExecuteBashCommand (“ln - s / lib64 / libdl.so。2 / tmp / libdl.so”);}/ /初始化LEADTOOLS SDK类无效InitLEADTOOLS (){SetLicense ();RasterDefaults。TemporaryDirectory =“/ tmp”;RasterDefaults.SetResourceDirectory (LEADResourceDirectory.Fonts“/ opt / ShadowFonts”);ocrEngine = OcrEngineManager.CreateEngine (OcrEngineType.LEAD);ocrEngine.Startup (,,“/ tmp”,“/ opt / OcrLEADRuntime”);documentConverter =DocumentConverter ();documentConverter.SetOcrEngineInstance (ocrEngine真正的);}/ /执行shell脚本的助手方法λ环境字符串ExecuteBashCommand (字符串命令){命令= command.Replace (“\”“,“\ \”);varproc =过程{StartInfo =ProcessStartInfo{文件名=“/ bin / bash”,参数=“- c \”“+命令+“\”“,UseShellExecute =,RedirectStandardOutput =真正的,CreateNoWindow =真正的}};proc.Start ();proc.WaitForExit ();返回proc.StandardOutput.ReadToEnd ();}/ /设置许可码TODO: licString和developerKey替换为一个有效的许可证和关键无效SetLicense (){字符串licString =“(许可证)\ n”+“许可= <文件> <版本> < /版本> 2.0添加许可证这里< / doc >”;字符串developerKey =“添加开发关键”;字节[]licBytes = System.Text.Encoding.UTF8.GetBytes (licString);RasterSupport。SetLicense (licBytes developerKey);}/ /主要转换函数公共字符串ConvertDocument (LEADRequest请求,StringWriter sw){varisUrl = Uri.IsWellFormedUriString(请求。InputUrl UriKind.RelativeOrAbsolute);如果(isUrl){var响应= httpClient.GetAsync (request.InputUrl) .Result;如果(response.IsSuccessStatusCode){var流= response.Content.ReadAsStreamAsync () .Result;使用(var文档= DocumentFactory.LoadFromStream(流,LoadDocumentOptions ())){字符串ext = DocumentWriter.GetFormatFileExtension (request.DocumentFormat);字符串文件名= Path.Combine (“/ tmp”,Path.ChangeExtension (Path.GetFileName (request.InputUrl), ext));DocumentConverterJobData jobData = DocumentConverterJobs。创建JobData(document, fileName, request.DocumentFormat);DocumentConverterJob工作= documentConverter.Jobs.CreateJob (jobData);documentConverter.Jobs.RunJob(工作);如果(job.Errors。数> 0)foreach(var错误job.Errors)sw.WriteLine ($在转换”的错误:{error.Error。消息}{error.Error.StackTrace}”);其他的返回文件名;}}其他的sw.WriteLine (“下载的URL不成功”);}其他的sw.WriteLine (“网址是无效的。”);返回;}}

设置许可文件

许可解锁项目需要的特性。它必须设置工具箱函数被调用之前。详情,包括教程为不同的平台,请参考设置一个运行时许可

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

请注意

添加LEADTOOLS NuGet和本地引用设置许可中会详细介绍添加引用和设置一个许可证教程。

更新FunctionHandler

当一个AWS Lambda函数触发的FunctionHandler方法被调用。中的一切函数将调用类全球之前,当函数是第一次启动。在容器温暖的,它只会叫FunctionHandler方法之前执行上下文的变化。

为了利用这个功能,大部分的初始化代码LEADLambdaHandler在每个函数调用构造函数保持尽可能快而容器是什么温暖的

打开Function.cs文件作为项目的一部分,并添加以下使用使用语句块的休息下。

c#
使用先;

添加下面的全局变量函数类:

c#
公共LEADLambdaHandler LEADHandler =LEADLambdaHandler ();

取代FunctionHandler与接受下面的一个方法LEADRequest作为输入,而不是一个字符串输入,然后调用LEADHandler.ConvertDocument方法:

c#
公共字符串FunctionHandler (LEADRequest请求,ILambdaContext上下文){StringWriter sw =StringWriter ();试一试{字符串outputFile = LEADHandler。转换文档(request, sw);如果(outputFile ! =)sw.WriteLine ($“成功保存到{outputFile}”。);其他的sw.WriteLine (“错误发生。输出文件未得救。”);}(异常交货){sw.WriteLine (ex.Message);sw.WriteLine (ex.StackTrace);如果(ex.InnerException ! =){sw.WriteLine (ex.InnerException.Message);sw.WriteLine (ex.InnerException.StackTrace);}}返回sw.ToString ();}

一旦添加的所有代码,构建项目,以确保一切都按预期工作。

收集所需的λ依赖性

请注意

如果需要的话可以跳过这一步。ZIP包含在这个项目包含所需的λ依赖了。

LEADTOOLS SDK要求某些依赖上安装Linux机器才能正常运转。一个完整的列表,请参阅开始使用Linux LEADTOOLS库和演示项目

AWSλ提供了一个码头工人形象,包含相同的Linux发行版之前测试功能部署到λ。这也可以用来安装所需的依赖项并创建一个部署包。这需要码头工人的桌面要安装。

indir=“/ var /任务/”outdir=“/ var /任务/ lib /”ldcache=$ (ldconfig- - - - - -p)mkdir- - - - - -poutdir美元$ (ls$ {indir}/*所以);deps=$ (ldd我美元| grep“= >”| grep- - - - - -v“liblt”)IFS=- - - - - -r线;结果=”“列表=(行美元)=$(回声ldcache美元| grep" ${列表[0]}")如果(!- z " $ dep”];然后cp- - - - - -六世" ${列表[2]}"outdir美元2 >/dev/fi完成了< < <“deps美元”完成

创建λ层

LEADTOOLS SDK需要安装在环境依赖性Lambda函数。为了保持包小,灵活,λ层使用。关于什么是层的更多信息,请参见AWSλ层

LEADTOOLS SDK OCR引擎需要附带任何依赖OCR部署。更多信息可以找到所需要的LEADTOOLS OCR模块-铅引擎运行时文件

因为AWSλ环境是必要的,阴影字体还需要。在阴影字体可以找到更多的信息LEADTOOLS绘图引擎和多平台的考虑

上传层的Zip文件

一旦创建层邮政,它需要上传到AWSλ。

AWS发布Lambda函数

层完成后,现在可以发布到AWS的函数。

这将运行dotnet发布的项目,然后zip文件和依赖关系,上传到λ。

减少包的大小

前一步骤中创建的包将会很大,因为它包含了很多依赖项添加到层。为了减少规模,压缩包将需要修改和手动上传λ。

这将更新函数包,这样就尽可能小。

更改设置

一旦包上传LD_LIBRARY_PATH环境变量的函数需要更新为了正确加载依赖关系。

一旦设置环境变量,层需要被添加到函数。

确保功能设置为2048 MB的内存:

测试函数

一旦前面步骤完成,准备进行测试的功能。

如果一切都设置正确,执行结果应该返回成功和看起来像:

执行结果返回成功

总结

本教程展示了如何创建一个新的AWS Lambda函数,收集所需的依赖项,并发布到AWS。

另请参阅

net
iOS
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2022领先的技术公司。保留所有权利。