Code in .NET-Skripten wiederverwenden

Jedes Skript wird in einem Workflow als unabhängiges Codefragment gespeichert. In früheren Versionen, die .NET-Sprachen nicht unterstützten, mussten Benutzer, die ihren vorhandenen Code wiederverwenden wollten, Funktionsdefinitionen in jedes neue Skript kopieren.

Mit der Einführung vom .NET-Support kann Skript-Code als kompilierte .NET-Zusammenstellungen geschrieben und verteilt werden. Um vorhandenen Code wiederzuverwenden, müssen Sie lediglich Ihren Workflow so konfigurieren, dass die erforderlichen Methoden aus einer .NET-Zusammenstellung aufgerufen werden.

Hier ist ein Beispiel, wie Sie eine .NET-Zusammenstellung in Visual Studio erstellen können:

  1. Erstellen Sie ein neues C#-Projekt vom Typ Klassenbibliothek und benennen Sie es FineReaderServer.UserScripts.
  2. Fügen Sie dieser Zusammenstellung eine Referenz hinzu: C:\Program Files\ABBYY FineReader Server 14.0\Bin\FRS.ScriptingObjects.Interop.dll
  3. Fügen Sie Ihrem Projekt eine neue Datei mit dem Namen UserScripts.cs mit dem folgenden Code hinzu:

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. Kompilieren Sie das Projekt und fügen Sie der resultierenden Zusammenstellung in der Datei Configuration.xml eine Referenz hinzu.
  2. Erstellen Sie einen neuen Workflow und konfigurieren Sie einen Dokumenttyp in diesem Workflow.
  3. Geben Sie wie folgt ein Skript für den Export an:

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. Senden eines Dokuments zur Verarbeitung.
  2. Warten Sie, bis das Dokument bei der Indexierungsstation ankommt, legen Sie dessen Typ und die Werte der Indexierungsfelder fest und klicken Sie auf Akzeptieren. Als Ergebnis wird das Dokument gemeinsam mit einer Datei des Namens document.pdf.attributes.txt veröffentlicht, in der die Werte der Indexierungsfelder enthalten sind:

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

26.03.2024 13:49:48

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.