Reutilizar código en scripts .NET

Cada script se almacena en un flujo de trabajo como fragmento de código independiente. En las primeras versiones que no admitían lenguajes .NET, los usuarios que quisieran reutilizar el código existente tenían que copiar las definiciones de función en cada nuevo script.

Desde que son compatibles con .NET, es posible escribir y distribuir código de script como ensamblados .NET compilados. Para reutilizar el código existente, solo tiene que configurar el flujo de trabajo para llamar a los métodos necesarios desde un ensamblado .NET.

A continuación figura un ejemplo de cómo crear un ensamblado .NET en Visual Studio:

  1. Cree un proyecto de C# de tipo de biblioteca de clases y denomínelo FineReaderServer.UserScripts.
  2. Añada una referencia a este ensamblado: C:\Program Files\ABBYY FineReader Server 14.0\Bin\FRS.ScriptingObjects.Interop.dll
  3. Añada en su proyecto un nuevo archivo denominado UserScripts.cs que contenga el siguiente código:

using System.IO;
using System.Linq;
using FineReaderServer.ScriptingObjects.Interop;
namespace FineReaderServer.UserScripts
{
   public static class Utils
   {
       public static string Join(string separator, IStringsCollection collection)
       {
           return string.Join(separator, collection.Cast<string>());
       }
   }
   public static class Extensions
   {
       public static string GetStringValue(this IAttribute attr)
       {
           switch(attr.Type)
           {
               case DocumentAttributeType.DAT_MultipleLines:
                   return Utils.Join(", ", attr.Value);
              case DocumentAttributeType.DAT_DateTime:
                   return attr.Value.ToString("s");
               default:
                   return attr.Value.ToString();
           }
       }
   }
   public static class DocumentAttributes
   {
       public static void SaveToFile(string path, IAttributes attributes)
       {
           using(var writer = File.CreateText(path))
           {
               foreach(IAttribute attribute in attributes)
               {
                   writer.WriteLine(string.Format("{0}: {1}", attribute.Name, attribute.GetStringValue()));
               }
           }
       }
   }
}

  1. Compile el proyecto y añada una referencia al ensamblado resultante en el archivo Configuration.xml.
  2. Cree un flujo de trabajo y configure en él un tipo de documento.
  3. Especifique un script de exportación del siguiente modo:

var format = doc.OutputFormats[0];
var outputFile = format.OutputFiles[0];
var attributesFile = System.IO.Path.Combine(format.OutputLocation, outputFile +".attributes.txt");
FineReaderServer.UserScripts.DocumentAttributes.SaveToFile(attributesFile, doc.Attributes);

  1. Envíe un documento a procesar.
  2. Espere a que el documento llegue a la estación de indexación, especifique su tipo y los valores de los campos de índice, y haga clic en Aceptar. Como resultado, el documento se publicará junto con un archivo denominado document.pdf.attributes.txt, que contendrá los valores de los campos de índice:

Title: Test document
Authors: Alice, Bob
Date:2019-07-22T19:40:36

26.03.2024 13:49:49

Please leave your feedback about this article

Usage of Cookies. In order to optimize the website functionality and improve your online experience ABBYY uses cookies. You agree to the usage of cookies when you continue using this site. Further details can be found in our Privacy Notice.