Réutilisation de code dans les scripts .NET

Chaque script est stocké dans un workflow en tant que fragment d'un code indépendant. Dans les versions antérieures qui ne prenaient pas en charge les langages .NET, si les utilisateurs souhaitaient réutiliser leur code existant, ils devaient copier les définitions de fonctions dans chaque nouveau script.

Depuis l'introduction de la prise en charge de .NET, vous pouvez écrire et distribuer du code de script sous forme d'assemblys .NET compilés. Pour réutiliser le code existant, il vous suffit de configurer votre workflow de manière à appeler les méthodes requises à partir d'un assembly .NET.

Voici un exemple de la façon dont vous pouvez créer un assembly .NET dans Visual Studio :

  1. Créez un nouveau projet C# de type Bibliothèque de classes et nommez-le FineReaderServer.UserScripts.
  2. Ajoutez une référence dans cet assembly : C:\Program Files\ABBYY FineReader Server 14.0\Bin\FRS.ScriptingObjects.Interop.dll
  3. Ajoutez un nouveau fichier intitulé UserScripts.cs dans votre projet contenant le code suivant :

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 inattributes)
               {
                   writer.WriteLine(string.Format("{0}: {1}", attribute.Name, attribute.GetStringValue()));
               }
           }
       }
   }
}

  1. Compilez le projet et ajoutez une référence à l'assembly obtenu dans le fichier Configuration.xml .
  2. Créez un nouveau workflow et, dans celui-ci, configurez un type de document.
  3. Spécifiez un script d'exportation comme indiqué ci-après :

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. Soumettez un document au traitement.
  2. Attendez que le document arrive sur le poste d’indexation, indiquez le type et les valeurs des champs d’index, puis cliquez sur Accepter. De ce fait, le document sera publié accompagné d'un fichier intitulé document.pdf.attributes.txt, qui contiendra les valeurs des champs d’index :

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

26.03.2024 13:49:50

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.