.NETスクリプトでコードを再使用する

各スクリプトは独立したコードフラグメントとしてワークフローに保存されます。.NET言語をサポートしていなかった旧版では、既存のコードを再使用したいユーザーは機能定義をそれぞれ、新しいスクリプトにコピーしなければなりませんでした。

.NETサポートが加わったため、コンパイルされた.NETアセンブリとしてスクリプトコードを記述および配布できます。既存のコードを再使用するには .NETアセンブリから必要なメソッドを呼び出すようワークフローを設定するだけです。

以下は、.NETアセンブリをVisual Studioで作成する方法の例です:

  1. 新しいタイプクラスライブラリのC#プロジェクトを作成して、FineReaderServer.UserScriptsと名付けます。
  2. このアセンブリに参照を追加します:C:\Program Files\ABBYY FineReader Server 14.0\Bin\FRS.ScriptingObjects.Interop.dll
  3. UserScripts.csと言う名前の新しいファイルを以下のコードが含まれるプロジェクトに追加します:

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. プロジェクトをコンパイルし、その結果のアセンブリへの参照をConfiguration.xml ファイルに追加します。
  2. 新しいワークフローを作成し、そのワークフローでドキュメントタイプを設定します。
  3. エクスポートスクリプトを以下のように指定します:

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. 処理するドキュメントを送信します。
  2. ドキュメントがインデックスステーションに到着するまで待機して、そのタイプとインデックスフィールドの値を指定し、Acceptをクリックします。その結果、ドキュメントはdocument.pdf.attributes.txtと言う名前のファイルと一緒に公開され、そのファイルにはインデックスフィールドの値が含まれます:

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

26.03.2024 13:49:51

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.