Para executar sua aplicação .NET Core em diferentes sistemas operacionais e containers, o ABBYY FineReader Engine fornece um wrapper .NET Core pronto para uso para a biblioteca do Engine. Esse wrapper permite que você acesse diretamente a API do ABBYY FineReader Engine, que é a mesma para todas as plataformas, com algumas exceções pontuais. Uma limitação importante é que os objetos que implementam IEngineLoader não estão disponíveis no Linux (consulte Differences between ABBYY FineReader Engine 12 for Windows and for Linux para a lista completa de diferenças).
Nesta versão, o wrapper .NET Core não oferece suporte ao trabalho com os objetos InprocLoader e OutprocLoader.
Para usar sua aplicação em containers, inclua-a junto com o .NET Core Runtime na imagem do container. Consulte os detalhes sobre como implantar o ABBYY FineReader Engine em um Docker container em Running ABBYY FineReader Engine 12 inside a Docker container.
Adicionando a biblioteca ABBYY FineReader Engine a um projeto .NET Core
O ABBYY FineReader Engine inclui o arquivo FREngine.DotNet.Interop.dll, que contém o wrapper do .NET Core para o FineReader Engine. Você pode encontrar esse arquivo na pasta Bin ou Bin64 do diretório de instalação. Adicione o FREngine.DotNet.Interop.dll às dependências do seu projeto e redistribua-o com seu aplicativo baseado no ABBYY FineReader Engine.
Carregando e descarregando o ABBYY FineReader Engine
Para inicializar o objeto Engine, defina o caminho para FREngine.dll com o método SetFREnginePath da classe estática FREngine e, em seguida, use a função InitializeEngine da mesma classe. Para descarregar o objeto Engine, use a função DeinitializeEngine.
Código C#
// Especifique o caminho para a ABBYY FineReader Engine Library (freRootPath)// antes da inicializaçãoFREngine.FREngine.SetFREnginePath ( freRootPath );// Carregando o objeto Engineengine = FREngine.FREngine.InitializeEngine( customerProjectId, licensePath, licensePassword, "", "", false ); ...// Descarregando o objeto Engineif ( engine == null ){ // O Engine não foi carregado return;}engine = null;GC.Collect();GC.WaitForPendingFinalizers();GC.Collect();FREngine.FREngine.DeinitializeEngine();
Todos os objetos no wrapper do .NET Core derivam da interface IDisposable, responsável por liberar os recursos alocados para os objetos. A implementação dessa interface garante a coleta automática de lixo quando um objeto não é mais necessário. É necessário usar a instrução using ao concluir o trabalho com os objetos, especialmente com objetos pesados relacionados ao processamento de documentos, síntese ou exportação, como IFRDocument, IFRPages, PDFExportParams etc. (veja o exemplo abaixo):
Código C#
using (FREngine.FRDocument document = engineLoader.Engine.CreateFRDocument()) { try { // Adicionar arquivo de imagem a um documento Console.WriteLine("Loading image..."); document.AddImageFile(imagePath, null, null); ... // Salvar resultados em PDF usando o cenário 'balanced' using (FREngine.PDFExportParams pdfParams = engineLoader.Engine.CreatePDFExportParams()) { pdfParams.Scenario = FREngine.PDFExportScenarioEnum.PES_Balanced; document.Export(Path.Combine(FreConfig.GetSamplesFolder(), @"SampleImages\Demo.pdf"), FREngine.FileExportFormatEnum.FEF_PDF, pdfParams); } }}
Caso prefira não usar a instrução using, chame explicitamente o método Dispose.ExemplosVeja o exemplo de código Hello, que ilustra o funcionamento do ABBYY FineReader Engine no .NET Core.