Zum Hauptinhalt springen
Dieser Beispielcode zeigt, wie Sie während des Exports den Wert eines Felds abrufen können. Sie können diesen Wert verwenden, um die Dateien zu benennen, in die Bilder oder Daten exportiert werden. Wenn ein solches Feld im Dokument nicht vorhanden ist, tritt ein Fehler auf.Die Struktur des zu exportierenden Dokuments:
Section 1
            Field1
            …
Group1
                        Field2
                        …

            FieldN
Section 2
            Field1
            …
            FieldK
[VBScript]
Dim field1Value, field2Value
' Ruft den Wert von Field1 in Section 1 ab
if Not IsNull( me.Field( "Section 1\Field1" ).Value ) then
    field1Value = me.Field( "Section 1\Field1" ).Value
end if
' Ruft den Wert von Field2 in Group1 in Section 1 ab
if Not IsNull( me.FIELD( "Section 1\Group1\Field2" ).Value ) then
    field2Value = me.Field( "Section 1\Group1\Field2" ).Value
end if
' Ruft den Wert von Field1 in Section 1 ab, wenn der Abschnitt mehrere Instanzen hat
if Not me.Field( "Section 1" ).Items Is Nothing then
    dim curPage
for each curPage in me.Field( "Section 1" ).Items
        if Not curPage.Children Is Nothing then
            dim curField
for each curField in curPage.Children
                if curField.Name = "Field1" And Not IsNull( curField.Value )  then
                     field1Value = curField.Value
                     exit for
end if
next
end if
next
end if
[JScript]
// Ruft den Wert von Field1 in Section 1 ab
if( Field("Section 1\\Field1").Value != null ) {
var field1Value = Field("Section 1\\Field1").Value;
}
// Ruft den Wert von Field2 in Group1 in Section 1 ab
if( Field("Section 1\\Group1\\Field2").Value != null ) {
var field2Value = Field("Section 1\\Group1\\Field2").Value;
}
// Ruft den Wert von Field1 in Section 1 ab, wenn der Abschnitt mehrere Instanzen hat
if( Field( "Section 1" ).Items != null ) {
    var i, j;
for( i = 0; i < Field( "Section 1" ).Items.Count; i++ ) {
        var curPage = Field( "Section 1" ).Items.Item( i );
if( curPage.Children != null ) {
for( j = 0; j < curPage.Children.Count; j++ ) { 
                var curField = curPage.Children.Item( j );
if( curField.Name == "Field1" && curField.Value != null ) {
                     var field1Value  = curField.Value;
                     break;
                }
            }
}
    }
}
Der Code in diesem Beispiel zeigt, wie Bilder aller Dokumentseiten im gewünschten Dateiformat, Farbschema und mit der gewünschten Auflösung exportiert werden. Die Bilder werden seitenweise gespeichert, d. h. jede Seite in einer separaten Datei.Die Dateien in diesem Beispiel heißen „page1.tif“, „page2.tif“ usw. Bei Bedarf können Sie das Schema für die Dateibenennung ändern. Sie können Dateinamen beispielsweise auf Grundlage des Werts eines Felds erstellen.
[VBScript]
dim fso, folderName
set fso = CreateObject("Scripting.FileSystemObject")
folderName = "d:\ExportImages"
if Not fso.FolderExists( folderName ) then
    fso.CreateFolder folderName
end if
dim imageOptions
set imageOptions = FCTools.NewImageSavingOptions
imageOptions.Format = "tif"
imageOptions.ColorType = "BlackAndWhite"
imageOptions.Resolution = 600
dim i
for i = 0 to me.Pages.Count - 1
    dim fileName
' Legt den gewünschten Namen und die Dateierweiterung abhängig vom ausgewählten Format fest
    fileName = fso.BuildPath( folderName, "page" & (i+1) & ".tif" )
    me.Pages.Item(i).SaveAs fileName, imageOptions
next
[JScript]
var fso = new ActiveXObject("Scripting.FileSystemObject");
var folderName = "d:\\ExportImages";
if( !fso.FolderExists( folderName ) ) {
    fso.CreateFolder( folderName );
}
var imageOptions = FCTools.NewImageSavingOptions();
imageOptions.Format = "tif";
imageOptions.ColorType = "BlackAndWhite";
imageOptions.Resolution = 600;
var i;
for( i = 0; i < Pages.Count; i++ ) {
// Legt den gewünschten Namen und die Dateierweiterung abhängig vom ausgewählten Format fest
    var fileName = fso.BuildPath( folderName, "page" + (i+1) + ".tif" );
    Pages.Item(i).SaveAs( fileName, imageOptions );
}
Dieses Beispiel zeigt, wie eine Tabelle in eine TXT-Datei (*.txt) exportiert wird.
[VBScript]
dim fso, txtFile, fileName
set fso = CreateObject("Scripting.FileSystemObject")
fileName = "d:\TestExportTable.txt"
set txtFile = fso.CreateTextFile( fileName, true )
txtFile.WriteLine "Table"
dim table, row, cell, rowNumber
set table = me.Field("Page 1\Table")
rowNumber = 1
for each row in table.Items
   txtFile.WriteLine "RowNumber = " & rowNumber
for each cell in row.Children
        txtFile.Write cell.Value & "   "
    next
txtFile.WriteBlankLines 1
    rowNumber = rowNumber + 1
next
txtFile.Close
set txtFile = nothing
set fso = nothing
[JScript]
var fso, txtFile, fileName;
fso = new ActiveXObject("Scripting.FileSystemObject");
fileName = "d:\\TestExportTable1.txt";
txtFile = fso.CreateTextFile( fileName, true );
txtFile.WriteLine( "Table" );
var table, i, j;
table = Field("Page 1\\Table");
var rows = table.Items;
for( i = 0; i < rows.Count; i++ ) {
    txtFile.WriteLine( "RowNumber = " + ( i+1 ) );
    var cells = rows.Item(i).Children;
for( j = 0; j < cells.Count; j++ ) {
       txtFile.Write( cells.Item(j).Value + "   " );
    }
txtFile.WriteBlankLines(1);
}
txtFile.Close();
Dieses Beispiel zeigt, wie Felder eines Dokuments beliebiger Verschachtelungstiefe mithilfe benutzerdefinierter Funktionen aus dem globalen Export-Modul exportiert werden. Wenn Sie Dokumentfelder mit variabler Verschachtelungstiefe exportieren müssen, empfiehlt es sich, eine externe COM-Komponente zu verwenden (siehe nächstes Beispiel).

Kern-Export-Code

[VBScript]
Export.ExportDocument me, FCTools
[JScript]
Export.ExportDocument( this, FCTools );

Der Code der Funktionen des globalen Export-Moduls

[VBScript]
' Die Prozedur führt den Export durch: erstellt einen Exportordner und
' speichert darin Seitenbilddateien, die Textdatei mit den Dokumentfeldern
' sowie Informationen über das Dokument
Sub ExportDocument(ByRef docObj, ByRef FCTools)
    Dim folderName
    Dim txtFile, fileName
    Dim fso
On Error Resume Next
    set fso = CreateObject("Scripting.FileSystemObject")
    ' Exportordner erstellen
    folderName = CreateExportFolder(docObj.DefinitionName, fso)
if Err.Number <> 0 then
        docObj.Action.Succeeded = false
docObj.Action.ErrorMessage = "Fehler beim Erstellen des Exportordners: " + Err.Description
        Err.Clear
        Exit Subub
    End if
' Bilder exportieren
    ExportImages docObj, FCTools, folderName, fso
    if Err.Number <> 0 then
        docObj.Action.Succeeded = false
docObj.Action.ErrorMessage = "Fehler beim Exportieren von Bildern: " + Err.Description
        Err.Clear
        Exit Sub
    End if
' Textdatei erstellen
    fileName = fso.BuildPath(folderName, "doc.txt")
    Set txtFile = fso.CreateTextFile(fileName, True)
' Dokumentinformationen exportieren
    ExportDocInfo docObj, txtFile
' Felder exportieren
    txtFile.WriteLine "Fields:"
    ExportFields docObj.Children, txtFile, ""
    txtFile.Close
if Err.Number <> 0 then
        docObj.Action.Succeeded = false
        docObj.Action.ErrorMessage = "Fehler beim Exportieren der Daten: " + Err.Description
        Err.Clear
        Exit Sub
    End if
Set txtFile = Nothing
    Set fso = Nothing
End Sub
' Bildexportfunktion
Function ExportImages( ByRef docObj, ByRef FCTools, ByVal exportFolder, ByRef fso )
    Dim pages, page, imageOptions
    Dim fileName, pageNum
' Exporteinstellungen festlegen
    Set imageOptions = FCTools.NewImageSavingOptions
    imageOptions.Format = "bmp"
imageOptions.ColorType = "FullColor"
    imageOptions.Resolution = 100
' Seitenweiser Export
    Set pages = docObj.Pages
    pageNum = 1
For Each page In pageses
        fileName = fso.BuildPath(exportFolder, "page" & pageNum & ".bmp")
        page.SaveAs fileName, imageOptions
        pageNum = pageNum + 1
    Next
End Function
' Die Prozedur, die Informationen über das Dokument exportiert
Sub ExportDocInfo(ByRef docObj, ByRef txtFile)
    txtFile.WriteLine "Doc info:"
    txtFile.WriteLine ("DocumentId " & docObj.Id)
txtFile.WriteLine ("IsAssembled " & docObj.IsAssembled)
    txtFile.WriteLine ("IsVerified " & docObj.IsVerified)
    txtFile.WriteLine ("IsExported " & docObj.IsExported)
txtFile.WriteLine ("ProcessingErrors " & docObj.ProcessingErrors)
    txtFile.WriteLine ("ProcessingWarnings " & docObj.ProcessingWarnings)
    txtFile.WriteLine ("TotalSymbolsCount " & docObj.TotalSymbolsCount)
txtFile.WriteLine ("RecognizedSymbolsCount " & docObj.RecognizedSymbolsCount)
    txtFile.WriteLine ("UncertainSymbolsCount " & docObj.UncertainSymbolsCount)
    txtFile.WriteLine
End Sub
' Die Prozedur, die Felder aus der fields-Sammlung exportiert
Sub ExportFields(ByRef fields, ByRef txtFile, ByVal indent)
    Dim curField
For Each curField In fields
        ExportField curField, txtFile, indent
    Next
End Sub
' Prüft, ob der Wert der Felder null ist
' Wenn der Feldwert ungültig ist, kann jeder Versuch, auf dieses Feld zuzugreifen (auch
' um zu prüfen, ob es null ist), eine Ausnahme auslösen
Function IsNullFieldValue( ByRef field )
    on error resume next
    IsNullFieldValue = IsNull( field.Value )
if Err.Number <> 0 then
        IsNullFieldValue = True
        Err.Clear
    End if
End Function
' Feld-Exportprozedur
Sub ExportField(ByRef field, ByRef txtFile, ByVal indent)
' Feldnamen speichern
    txtFile.Write (indent & field.Name)
' Feldwert speichern, wenn zugänglich
    If IsNullFieldValue(field) Then
        txtFile.WriteLine
    Else
txtFile.WriteLine ("    " & field.Text)
    End If
If Not field.Children Is Nothing Then
        ' untergeordnete Felder exportieren
        ExportFields field.Children, txtFile, indent & "    "
ElseIf Not field.Items Is Nothing Then
        ' Feldinstanzen exportieren
        ExportFields field.Items, txtFile, indent & "    "
    End If
End Sub
' Die Funktion erstellt einen Exportordner und gibt den vollständigen Pfad zu diesem Ordner zurück
Function CreateExportFolder(ByVal definitionName, ByRef fso)
    Dim docFolder, folderName
' Hauptordner
    exportFolder = "d:\ScriptExport"
If fso.FolderExists(exportFolder) = False Then
        fso.CreateFolder (exportFolder)
    End If
' der Ordner der angegebenen Document Definition
    docFolder = fso.BuildPath(exportFolder, definitionName)
If fso.FolderExists(docFolder) = False Then
        fso.CreateFolder (docFolder)
    End If
' der Ordner des exportierten Dokuments
    Dim i
    i = 1
    folderName = fso.BuildPath(docFolder, i)
While fso.FolderExists(folderName)
        i = i + 1
        folderName = fso.BuildPath(docFolder, i)
    Wend
fso.CreateFolder (folderName)
    CreateExportFolder = folderName
End Function
[JScript]
// Die Funktion führt den Export durch: erstellt einen Exportordner und
// speichert darin Seitenbilddateien, die Textdatei mit den Dokumentfeldern
// sowie Informationen über das Dokument
function ExportDocument(docObj, exportImageTools)
{
var folderName
    var txtFile, fileName
    var fso
fso = new ActiveXObject("Scripting.FileSystemObject");
    // Exportordner erstellen
    try {
folderName = CreateExportFolder(docObj.DefinitionName, fso);
    } catch( e ) {
docObj.Action.Succeeded = false;
        docObj.Action.ErrorMessage = "Fehler beim Erstellen des Exportordners: " + e.description;
        return;n;
}
// Bilder exportieren
    try {
ExportImages(docObj, exportImageTools, folderName, fso);
    } catch( e ) {
docObj.Action.Succeeded = false;
        docObj.Action.ErrorMessage = "Fehler beim Exportieren von Bildern: " + e.description;
        return;
    }
// Textdatei erstellen
    fileName = fso.BuildPath(folderName, "doc.txt");
    txtFile = fso.CreateTextFile(fileName, true);
// Exportiert Informationen über das Document
    ExportDocInfo( docObj, txtFile );
// Felder exportieren
    txtFile.WriteLine( "Fields:" );
    try {
ExportFields( docObj.Children, txtFile, "" );
    } catch( e ) { {
docObj.Action.Succeeded = false;
        docObj.Action.ErrorMessage = "Fehler beim Exportieren der Daten: " + e.description;
        txtFile.Close();
        return;
    }
txtFile.Close();
    txtFile = 0;
    fso = 0;
}
// Bildexportfunktion. Wenn beim Exportieren von Bildern ein Fehler auftritt,
// wird eine Fehlermeldung zurückgegeben; andernfalls wird ein leerer string zurückgegeben
function ExportImages( docObj, exportImageTools, exportFolder, fso )
{
// Exporteinstellungen festlegen
    var imageOptions = exportImageTools.NewImageSavingOptions();
    imageOptions.Format = "bmp";
    imageOptions.ColorType = "FullColor";
    imageOptions.Resolution = 100;
// seitenweiser Export
    var pages = docObj.Pages;
    var i
for( i = 0; i < pages.Count; i++ ) {
        var fileName = fso.BuildPath( exportFolder, "page" + (i+1) + ".bmp" );
        pages.Item(i).SaveAs( fileName, imageOptions );
    }
}
// Die Prozedur, die Informationen über das Document exportiert
function ExportDocInfo(docObj, txtFile)
{
txtFile.WriteLine( "Doc info:" );
    txtFile.WriteLine("IsAssembled " + docObj.IsAssembled);
    txtFile.WriteLine("IsVerified " + docObj.IsVerified);
txtFile.WriteLine("IsExported " + docObj.IsExported);
    txtFile.WriteLine("ProcessingErrors " + docObj.ProcessingErrors);
    txtFile.WriteLine("ProcessingWarnings " + docObj.ProcessingWarnings);
txtFile.WriteLine("TotalSymbolsCount " + docObj.TotalSymbolsCount);
    txtFile.WriteLine("RecognizedSymbolsCount " + docObj.RecognizedSymbolsCount);
    txtFile.WriteLine("UncertainSymbolsCount " + docObj.UncertainSymbolsCount);
    txtFile.WriteLine();
}
// Die Prozedur, die Felder aus der Felder-Sammlung exportiert
function ExportFields(fields, txtFile, indent)
{
var i
    for( i = 0; i < fields.Count; i++ ) {
        ExportField( fields.Item(i), txtFile, indent );
    }
}
// Prüft, ob der Feldwert null ist
// Wenn der Feldwert ungültig ist, kann jeder Versuch, auf dieses Feld zuzugreifen (auch
// um zu prüfen, ob es null ist), eine Ausnahme auslösen
function IsNullFieldValue( field )
{
try {
return ( field.Value == null );
    } catch( e ) {
return true;
    }
}
// Feld-Exportprozedur
function ExportField(field, txtFile, indent)
{
// Dateinamen speichern
    txtFile.Write(indent + field.Name);
// Feldwert speichern, wenn darauf zugegriffen werden kann
    if( IsNullFieldValue( field ) ) {
        txtFile.WriteLine();
    } else {
txtFile.WriteLine("    " + field.Text);
    } }
if( field.Children != null ) {
        // untergeordnete Felder exportieren
        ExportFields( field.Children, txtFile, indent + "    " );
} else if( field.Items != null ) {
        // Feld-Instanzen exportieren
        ExportFields( field.Items, txtFile, indent + "    " );
    }
}
// Die Funktion erstellt einen Exportordner und gibt den vollständigen Pfad zu diesem Ordner zurück
function CreateExportFolder(definitionName, fso)
{
    var docFolder, folderName
// Hauptordner
    var exportFolder = "d:\\ScriptExport";
if( !fso.FolderExists(exportFolder) ) {
        fso.CreateFolder (exportFolder);
    } }
// der Ordner der angegebenen Document Definition
    docFolder = fso.BuildPath(exportFolder, definitionName);
if( !fso.FolderExists(docFolder) ) {
        fso.CreateFolder(docFolder);
    }
// der Ordner des exportierten Dokuments
    var i = 1;
    folderName = fso.BuildPath(docFolder, i);
while( fso.FolderExists(folderName) ) {
        i++;
        folderName = fso.BuildPath(docFolder, i);
    }
fso.CreateFolder(folderName);
    return folderName;
}
[VBScript]
dim autoExport
set autoExport = CreateObject( "AutomationExport.Exporter" )
autoExport.Export me, FCTools
[JScript]
var autoExport = new ActiveXObject("AutomationExport.Exporter");
autoExport.Export( this, FCTools );

Code einer ActiveX-Komponente in VisualBasic

Nachfolgend ist der Code der Exporter-Klasse aus dem AutomationExport-Projekt aufgeführt, der in den oben genannten Skripten verwendet wird.
OptionExplicit
Dim mFso AsNew Scripting.FileSystemObject
' Die Prozedur führt den Document-Export durch: erstellt einen Export-Ordner und
' speichert darin Seitenbilddateien, die Textdatei mit Dokumentfeldern,
' and information about the document
PublicSub Export(ByRef docObj As Object, ByRef FCTools As Object)
OnErrorGoTo err_h
Dim folderName AsString
Dim txtFile As TextStream, fileName AsString
Dim imageExportResult AsString, errMessage AsString
' Exportordner wird erstellt
folderName = createExportFolder(docObj.definitionName)
If folderName = "" Then
docObj.Action.Succeeded = False
docObj.Action.ErrorMessage = "Cannot create export folder"
ExitSub
EndIf
' Bilder exportieren
imageExportResult = exportImages(docObj, FCTools, folderName)
' Textdatei wird erstellt
fileName = mFso.BuildPath(folderName, "doc.txt")
Set txtFile = mFso.CreateTextFile(fileName, True)
' Informationen zu Problemen beim Bildexport speichern
If imageExportResult <> "" Then
txtFile.WriteLine imageExportResult
errMessage = errMessage & imageExportResult
EndIf
' Informationen über das Document exportieren
exportDocInfo docObj, txtFile
' Felder exportieren
txtFile.WriteLine "Fields:"
IfNot exportFields(docObj.Children, txtFile, "") Then
errMessage = errMessage & " Error during export data"
EndIf
txtFile.Close
' wenn beim Export Fehler auftreten, zurücksetzen
' Erfolgsflag für Export auf False setzen
If errMessage <> "" Then
docObj.Action.Succeeded = False
docObj.Action.ErrorMessage = errMessage
EndIf
Set txtFile = Nothing
Set mFso = Nothing
ExitSub
err_h:
docObj.Action.Succeeded = False
docObj.Action.ErrorMessage = Err.Description
txtFile.Close
Set mFso = Nothing
EndSub
' Image-Exportfunktion. Wenn beim Exportieren von Images ein Fehler auftritt,
' Es gibt eine Fehlermeldung zurück, andernfalls einen leeren string
PrivateFunction exportImages(ByRef docObj As Object, ByRef FCTools As Object, _
ByVal exportFolder AsString) AsString
OnErrorGoTo err_h
Dim pages As Object, page As Object, imageOptions As Object
Dim fileName AsString, pageNum AsLong
exportImages = ""
' Exporteinstellungen angeben
Set imageOptions = FCTools.NewImageSavingOptions
imageOptions.Format = "png"
imageOptions.ColorType = "GrayScale"
imageOptions.Resolution = 300
' seitenweiser Export
Set pages = docObj.pages
pageNum = 1
ForEach page In pages
fileName = mFso.BuildPath(exportFolder, page.definitionName + "_page" & pageNum & "." & imageOptions.Format)
page.SaveAs fileName, imageOptions
pageNum = pageNum + 1
Nächste Seite
ExitFunction
err_h:
exportImages = Err.Description
EndFunction
' Die Prozedur, die Informationen über das Document exportiert
PrivateSub exportDocInfo(ByRef docObj As Object, ByRef txtFile As TextStream)
OnErrorGoTo err_h
txtFile.WriteLine "Doc info:"
txtFile.WriteLine ("DocumentId " & docObj.Id)
txtFile.WriteLine ("IsAssembled " & docObj.IsAssembled)
txtFile.WriteLine ("IsVerified " & docObj.IsVerified)
txtFile.WriteLine ("IsExported " & docObj.IsExported)
txtFile.WriteLine ("ProcessingErrors " & docObj.ProcessingErrors)
txtFile.WriteLine ("ProcessingWarnings " & docObj.ProcessingWarnings)
txtFile.WriteLine ("TotalSymbolsCount " & docObj.TotalSymbolsCount)
txtFile.WriteLine ("RecognizedSymbolsCount " & docObj.RecognizedSymbolsCount)
txtFile.WriteLine ("UncertainSymbolsCount " & docObj.UncertainSymbolsCount)
txtFile.WriteLine
ExitSub
err_h:
txtFile.WriteLine Err.Description
EndSub
' Die Prozedur, die Felder aus der fields-Sammlung exportiert
PrivateFunction exportFields(ByRef fields As Object, ByRef txtFile As TextStream, ByVal indent As String) AsBoolean
OnErrorGoTo err_h
Dim curField As Object
exportFields = True
ForEach curField In fields
IfNot exportField(curField, txtFile, indent) Then
exportFields = False
EndIf
Next curField
ExitFunction
err_h:
txtFile.WriteLine Err.Description
exportFields = False
EndFunction
' Prüft, ob der Feldwert null ist
' Wenn der Wert ungültig ist, führt jeder Versuch, auf dieses Feld zuzugreifen (selbst
' um zu prüfen, ob es null ist) kann eine Ausnahme verursachen
Function IsNullFieldValue(ByRef field As Object) AsBoolean
OnErrorGoTo err_h
IsNullFieldValue = IsNull(field.Value)
ExitFunction
err_h:
IsNullFieldValue = True
EndFunction
' Feld-Exportfunktion
PrivateFunction exportField(ByRef field As Object, ByRef txtFile As TextStream, _
ByVal indent AsString) AsBoolean
OnErrorGoTo err_h
Dim result AsBoolean
result = True
' Feldnamen speichern
txtFile.Write (indent & field.Name)
' Feldwert speichern, wenn zugänglich
IfNot IsNullFieldValue(field) Then
txtFile.WriteLine ("    " & field.Value)
Else
txtFile.WriteLine
EndIf
IfNot field.Children Is NothingThen
' untergeordnete Felder exportieren
result = result And exportFields(field.Children, txtFile, indent & "    ")
ElseIfNot field.Items IsNothingThen
' Feld-Instanzen exportieren
result = result And exportFields(field.Items, txtFile, indent & "    ")
EndIf
exportField = result
ExitFunction
err_h:
txtFile.WriteLine Err.Description
exportField = False
EndFunction
' Die Funktion erstellt einen Exportordner und gibt den vollständigen Pfad zu diesem Ordner zurück
PrivateFunction createExportFolder(ByVal definitionName AsString) AsString
OnErrorGoTo err_h
Dim docFolder AsString, folderName AsString
' Hauptordner
Const exportFolder = "d:\AutomationExport"
If mFso.FolderExists(exportFolder) = FalseThen
mFso.CreateFolder (exportFolder)
EndIf
' der Ordner der angegebenen Document Definition
docFolder = mFso.BuildPath(exportFolder, definitionName)
If mFso.FolderExists(docFolder) = FalseThen
mFso.CreateFolder (docFolder)
EndIf
' der Ordner des exportierten Dokuments
Dim i AsLong
i = 1
folderName = mFso.BuildPath(docFolder, i)
While mFso.FolderExists(folderName)
i = i + 1
folderName = mFso.BuildPath(docFolder, i)
Wend
mFso.CreateFolder (folderName)
createExportFolder = folderName
ExitFunction
err_h:
createExportFolder = ""
EndFunction

Verwendung einer externen Komponente in .NET( C# )

Gehen Sie folgendermaßen vor, um eine in .Net geschriebene externe Komponente zu verwenden:
  1. Erstellen Sie ein Projekt des Typs ClassLibrary
  2. Fügen Sie dem Projekt die Datei ControllerInterop.dll als Verweis hinzu. ABBYY.FlexiCapture wird in der Liste Verweise angezeigt, und alle Schnittstellen der Skriptobjekte stehen im Projekt zur Verfügung.
  3. Definieren Sie das disp-Interface und die Klasse, die dieses Interface implementiert, sowie die ProgId (dadurch wird es möglich, mit der .Net-Komponente genauso wie mit ActiveX aus dem Code des Skripts zu arbeiten).
  4. Nach dem Erstellen des Projekts registrieren Sie die generierte Typbibliothek (dies kann automatisch erfolgen, wenn Sie die entsprechende Option in den Projekteigenschaften aktivieren).
  5. Rufen Sie im Export-Code die Methode der Komponente wie gewohnt auf:
[VBScript]
dim autoExport
set autoExport = CreateObject( "ExportLibrary1.Export" )
autoExport.ExportDocument me, FCTools
[JScript]
var autoExport = new ActiveXObject("ExportLibrary1.Export"); autoExport.ExportDocument( this, FCTools );
Im Folgenden ist der Code einer solchen Komponente aufgeführt:
using System;
using System.Runtime.InteropServices;
using System.IO;
using ABBYY.FlexiCapture;
namespace ExportLibrary1
{
// Die Schnittstelle der Export-Komponente, auf die über das Skript zugegriffen werden kann
      // Beim Erstellen einer neuen Komponente eine neue GUID generieren
      [Guid("32B10C3B-EEA3-4194-B0A0-E358C310225A")]
      [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface _cExport
      {
            [DispId(1)]
            void ExportDocument(ref IExportDocument DocRef, ref FCTools Tools);
      }
// Die Klasse, die die Funktionalität der Export-Komponente implementiert
      // Beim Erstellen einer neuen Komponente eine neue GUID generieren
// und die ProgId festlegen
      [Guid("3BA19BD7-C6DC-4f63-BC08-0D95254DADC3")]
      [ClassInterface(ClassInterfaceType.None)]
[ProgId("ExportLibrary1.Export")]
      [ComVisible(true)]
public class Export : _cExport
      {
            public Export()
            {
            }
// Die Funktion führt den Document-Export durch: erstellt einen Export-Ordner und
// speichert darin Seiten-Bilddateien,
// die Textdatei mit Dokumentfeldern und Informationen zum Dokument
            public void ExportDocument( ref IExportDocument docRef, ref FCTools FCTools )
{
try
                  {
string exportFolder = createExportFolder( docRef.DefinitionName );
                        exportImages( docRef, FCTools, exportFolder );
// Textdatei erstellen
                        string fileName = exportFolder + "//" + "doc.txt";
                        StreamWriter sw = File.CreateText( fileName );
// Dokumentinformationen exportieren
                        exportDocInfo( docRef, sw );
// Felder exportieren
                        sw.WriteLine( "Fields:" );
                        exportFields( docRef.Children, sw, "" );
                        sw.Close();
                  }
catch( Exception e )
                  {
                        docRef.Action.Succeeded = false;
                        docRef.Action.ErrorMessage = e.ToString();                      
                  }
            }
// Die Funktion erstellt einen Exportordner und gibt den vollständigen Pfad zu diesem Ordner zurück
            privatestring createExportFolder(string definitionName )
            {
                  string docFolder, folderName;
// Hauptordner
                  string exportFolder = "d:\\DotNetExport";
                  if( !Directory.Exists(exportFolder) )
                  {
                        Directory.CreateDirectory(exportFolder);
                  }
// der Ordner der angegebenen Document Definition
                  docFolder = exportFolder + "\\" + definitionName;
                  if( !Directory.Exists(docFolder) )
                  {
                        Directory.CreateDirectory( docFolder ); 
                  }
// der Ordner des exportierten Dokuments
                  int i = 1;
                  folderName = docFolder + "\\" + i;
while( Directory.Exists(folderName) )
                  {
                        i++;
                        folderName = docFolder + "\\" + i;
                  }
Directory.CreateDirectory(folderName);
                  return folderName;
            }
// Funktion zum Exportieren von Bildern
            private void exportImages( IExportDocument docRef, FCTools FCTools, string exportFolder )
            {
string baseFileName = exportFolder + "\\page_";
                  IExportImageSavingOptions imageOptions = FCTools.NewImageSavingOptions();
                  imageOptions.Format = "bmp";
imageOptions.ColorType = "FullColor";
                  imageOptions.Resolution = 100;
                  int i = 1;
                  foreach( IExportPage curPage in docRef.Pages )
                  {
string fileName = baseFileName + i + ".bmp";
                        curPage.SaveAs( fileName, imageOptions );
                        i++;
                  }
            }
// Dokumentinformationen exportieren
            private void exportDocInfo( IExportDocument docRef, StreamWriter sw )
            {
                  sw.WriteLine( "Doc info:" );
                  sw.WriteLine("DocumentId " + docRef.Id );
sw.WriteLine("IsAssembled " + docRef.IsAssembled);
                  sw.WriteLine("IsVerified " + docRef.IsVerified);
                  sw.WriteLine("IsExported " + docRef.IsExported);
sw.WriteLine("ProcessingErrors " + docRef.ProcessingErrors);
                  sw.WriteLine("ProcessingWarnings " + docRef.ProcessingWarnings);
                  sw.WriteLine("TotalSymbolsCount " + docRef.TotalSymbolsCount);
sw.WriteLine("RecognizedSymbolsCount " + docRef.RecognizedSymbolsCount);
                  sw.WriteLine("UncertainSymbolsCount " + docRef.UncertainSymbolsCount);
                  sw.WriteLine();
            }
// Feld-Sammlung exportieren
             private void exportFields( IExportFields fields, StreamWriter sw, string indent )
            {
foreach( IExportField curField in fields )
                  {
                        exportField( curField, sw, indent );
                  }
            }
// Prüft, ob der Feldwert null ist
            // Wenn der Feldwert ungültig ist, kann jeder Zugriffsversuch auf dieses Feld (auch
// um zu prüfen, ob es null ist) eine Ausnahme auslösen
            privatebool IsNullFieldValue( IExportField field )
            {
try
                  {
                        return ( field.Value == null );
                  }
catch( Exception e )
                  {
                        returntrue;
                  }
            }
// Das angegebene Feld exportieren
            private void exportField( IExportField field, StreamWriter sw, string indent )
            {
// Feldnamen speichern
                  sw.Write( indent + field.Name );
// Feldwert speichern, wenn zugänglich
                  if( IsNullFieldValue( field ) )
                  {
                        sw.WriteLine();
                  }
else
                  {
                        sw.WriteLine( "    " + field.Text );
                  }
if( field.Children != null )
                  {
                        // untergeordnete Felder exportieren
                        exportFields( field.Children, sw, indent + "    " );
                  }
else if( field.Items != null )
                  {
// Feld-Instanzen exportieren
                        exportFields( field.Items, sw, indent + "    " );
                  }
                  }
      }
            }
Dieser Beispielcode zeigt einen einfachen Export-Handler, der Informationen zu exportierten Dokumenten und Exportergebnissen in Textdateien speichert. In diesem Beispiel werden zwei Textdateien verwendet: eine mit einer Liste der erfolgreich exportierten Dokumente und eine mit einer Liste der Dokumente, bei deren Export Fehler aufgetreten sind.
[VBScript]
dim curDoc
dim fso, fileErrorName, txtErrorFile, fileSucceedName, txtSucceedFile
set fso = CreateObject("Scripting.FileSystemObject")
' Erstellen der Datei mit fehlgeschlagenen Dokumenten
fileErrorName = "d:\ExportResults\ErrorsDocuments.txt"
set txtErrorFile = fso.CreateTextFile( fileErrorName, true )
' Erstellen der Datei mit erfolgreich exportierten Dokumenten
fileSucceedName = "d:\ExportResults\SucceedDocuments.txt"
set txtSucceedFile = fso.CreateTextFile( fileSucceedName, true )
dim i, exprortResult, docInfo
' Durchlaufen der Sammlung exportierter Dokumente
for i = 0 Tome.Count - 1
    set exportResult = me.Item(i)
    docInfo = "DocumentId:" & exportResult.Document.Id
if exportResult.Succeeded then
        docInfo = docInfo & " - Erfolgreich exportiert."
        txtSucceedFile.WriteLine docInfo
    else
docInfo = docInfo & " - Exportfehler: " & exportResult.ErrorMessage
        txtErrorFile.WriteLine docInfo
    endif
next
txtErrorFile.Close
txtSucceedFile.Close
[JScript]
var fso = new ActiveXObject("Scripting.FileSystemObject");
// Erstellen der Datei mit fehlgeschlagenen Dokumenten
var fileErrorName = "d:\\ExportResults\\ErrorsDocuments.txt";
var txtErrorFile = fso.CreateTextFile( fileErrorName, true );
// Erstellen der Datei mit erfolgreich exportierten Dokumenten
var fileSucceedName = "d:\\ExportResults\\SucceedDocuments.txt"
var txtSucceedFile = fso.CreateTextFile( fileSucceedName, true );
var i
// Durchlaufen der Sammlung exportierter Dokumente
for( i = 0; i < Documents.Count; i++ ) {
    var curDoc = Documents.Item( i );
    var docInfo = "DocumentId: " + curDoc.Id;
if( curDoc.Action.Succeeded ) {
        docInfo = docInfo + ". Erfolgreich exportiert.  Result:" + curDoc.Action.Result;
        txtSucceedFile.WriteLine( docInfo );
    } else {
docInfo = docInfo + ". Exportfehler: " + curDoc.Action.ErrorMessage + "  Result:" + curDoc.Action.Result;
        txtErrorFile.WriteLine( docInfo );
    }
}
txtErrorFile.Close();
txtSucceedFile.Close();
Dieses Beispielskript zeigt, wie Sie die Quelldateien beim Exportieren von Dokumenten speichern können. Die Quelldateien müssen in einem der unterstützten gängigen Office-Formate vorliegen und eindeutige Namen erhalten, um Namenskonflikte zu vermeiden.
using System;
using System.IO;
using System.Collections.Generic;
// Die Seiten durchlaufen.
for( int i = 0; i<Document.Pages.Count; i++ ) {
IPage page = Document.Pages[i];
// Prüfen, ob eine Quelldatei vorhanden ist.
if( page.SourceFileGUID == "" ) {
continue;
}
// Der ursprüngliche Dateiname.
string sourceFileName = @"";
// Den ursprünglichen Dateinamen festlegen.
if( page.ImageSourceType == @"File" ) {
sourceFileName = Path.GetFileName( page.ImageSource );
} else if( page.ImageSourceType == @"Scanner" || page.ImageSourceType == @"Custom" ) {
sourceFileName = Path.GetFileName( page.ImageSourceFileSubPath );
}
// Die Dateierweiterung aus dem Dateinamen entfernen.
if( sourceFileName != @"" ) {
sourceFileName = Path.GetFileNameWithoutExtension( sourceFileName ) + @".";
}
// Eindeutiger Quelldateiname (ursprünglicher Name + GUID).
string sourceFileUniqueName = sourceFileName + page.SourceFileGUID;
// Der Pfad zu dem Ordner, in dem die Quelldatei gespeichert werden soll.
string sourceFilePath = Document.Batch.Project.ExportRootPath + @"\" + sourceFileUniqueName;
// Sicherstellen, dass die Datei noch nicht vorhanden ist.
if( File.Exists( sourceFilePath ) ) {
continue;
}
// Die Datei speichern.
Processing.ReportMessage( "Saving source file: " + sourceFileUniqueName );
page.SaveSourceFile( sourceFilePath );
}