Obtenir les valeurs des champs lors de l’export
Section 1
Field1
…
Group1
Field2
…
…
FieldN
Section 2
Field1
…
FieldK
Dim field1Value, field2Value
' Obtient la valeur de Field1 dans Section 1
if Not IsNull( me.Field( "Section 1\Field1" ).Value ) then
field1Value = me.Field( "Section 1\Field1" ).Value
end if
' Obtient la valeur de Field2 dans Group1 dans Section 1
if Not IsNull( me.FIELD( "Section 1\Group1\Field2" ).Value ) then
field2Value = me.Field( "Section 1\Group1\Field2" ).Value
end if
' Obtient la valeur de Field1 dans Section 1 si la section comporte plusieurs instances
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
// Obtient la valeur de Field1 dans Section 1
if( Field("Section 1\\Field1").Value != null ) {
var field1Value = Field("Section 1\\Field1").Value;
}
// Obtient la valeur de Field2 dans Group1 dans Section 1
if( Field("Section 1\\Group1\\Field2").Value != null ) {
var field2Value = Field("Section 1\\Group1\\Field2").Value;
}
// Obtient la valeur de Field1 dans Section 1 si la section comporte plusieurs instances
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;
}
}
}
}
}
Exporter les images des pages
page1.tif, page2.tif, et ainsi de suite. Vous pouvez modifier la convention de nommage des fichiers — par exemple, en basant les noms de fichier sur la valeur d’un champ.
L’exemple VBScript suivant exporte les images des pages :
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
' Définit le nom et l'extension souhaités pour le fichier en fonction du format sélectionné
fileName = fso.BuildPath( folderName, "page" & (i+1) & ".tif" )
me.Pages.Item(i).SaveAs fileName, imageOptions
next
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++ ) {
// Définit le nom et l'extension souhaités pour le fichier en fonction du format sélectionné
var fileName = fso.BuildPath( folderName, "page" + (i+1) + ".tif" );
Pages.Item(i).SaveAs( fileName, imageOptions );
}
Export d’un tableau
*.txt.
L’exemple VBScript suivant exporte le tableau :
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
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();
Exportation d’un document, quel que soit son niveau d’imbrication
Code d’export principal
Export.ExportDocument me, FCTools
Export.ExportDocument( this, FCTools );
Fonctions du module d’export global
' La procédure effectue l'export : crée un dossier d'export et
' y enregistre les fichiers d'image de page, le fichier texte avec les champs du document,
' ainsi que les informations sur le document
Sub ExportDocument(ByRef docObj, ByRef FCTools)
Dim folderName
Dim txtFile, fileName
Dim fso
On Error Resume Next
set fso = CreateObject("Scripting.FileSystemObject")
' création du dossier d'export
folderName = CreateExportFolder(docObj.DefinitionName, fso)
if Err.Number <> 0 then
docObj.Action.Succeeded = false
docObj.Action.ErrorMessage = "Error during create export folder: " + Err.Description
Err.Clear
Exit Subub
End if
' exportation des images
ExportImages docObj, FCTools, folderName, fso
if Err.Number <> 0 then
docObj.Action.Succeeded = false
docObj.Action.ErrorMessage = "Error during export images: " + Err.Description
Err.Clear
Exit Sub
End if
' création du fichier texte
fileName = fso.BuildPath(folderName, "doc.txt")
Set txtFile = fso.CreateTextFile(fileName, True)
' exportation des informations sur le document
ExportDocInfo docObj, txtFile
' exportation des champs
txtFile.WriteLine "Fields:"
ExportFields docObj.Children, txtFile, ""
txtFile.Close
if Err.Number <> 0 then
docObj.Action.Succeeded = false
docObj.Action.ErrorMessage = "Error during export data: " + Err.Description
Err.Clear
Exit Sub
End if
Set txtFile = Nothing
Set fso = Nothing
End Sub
' Fonction d'exportation des images
Function ExportImages( ByRef docObj, ByRef FCTools, ByVal exportFolder, ByRef fso )
Dim pages, page, imageOptions
Dim fileName, pageNum
' définition des paramètres d'export
Set imageOptions = FCTools.NewImageSavingOptions
imageOptions.Format = "bmp"
imageOptions.ColorType = "FullColor"
imageOptions.Resolution = 100
' exportation page par page
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
' La procédure qui exporte les informations sur le document
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
' La procédure qui exporte les champs depuis la collection de champs
Sub ExportFields(ByRef fields, ByRef txtFile, ByVal indent)
Dim curField
For Each curField In fields
ExportField curField, txtFile, indent
Next
End Sub
' Vérifie si la valeur des champs est nulle
' Si la valeur du champ est invalide, toute tentative d'accès à ce champ (même
' pour vérifier si elle est nulle) peut lever une exception
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
' Procédure d'exportation des champs
Sub ExportField(ByRef field, ByRef txtFile, ByVal indent)
' enregistrement du nom du champ
txtFile.Write (indent & field.Name)
' enregistrement de la valeur du champ si elle est accessible
If IsNullFieldValue(field) Then
txtFile.WriteLine
Else
txtFile.WriteLine (" " & field.Text)
End If
If Not field.Children Is Nothing Then
' exportation des champs enfants
ExportFields field.Children, txtFile, indent & " "
ElseIf Not field.Items Is Nothing Then
' exportation des instances de champ
ExportFields field.Items, txtFile, indent & " "
End If
End Sub
' La fonction crée un dossier d'export et renvoie le chemin complet vers ce dossier
Function CreateExportFolder(ByVal definitionName, ByRef fso)
Dim docFolder, folderName
' dossier principal
exportFolder = "d:\ScriptExport"
If fso.FolderExists(exportFolder) = False Then
fso.CreateFolder (exportFolder)
End If
' le dossier de la définition de document spécifiée
docFolder = fso.BuildPath(exportFolder, definitionName)
If fso.FolderExists(docFolder) = False Then
fso.CreateFolder (docFolder)
End If
' le dossier du document exporté
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
// La fonction effectue l'exportation : crée un dossier d'export et
// y enregistre les fichiers image de page, le fichier texte avec les champs du document,
// ainsi que les informations sur le document
function ExportDocument(docObj, exportImageTools)
{
var folderName
var txtFile, fileName
var fso
fso = new ActiveXObject("Scripting.FileSystemObject");
// création des dossiers d'export
try {
folderName = CreateExportFolder(docObj.DefinitionName, fso);
} catch( e ) {
docObj.Action.Succeeded = false;
docObj.Action.ErrorMessage = "Error during create export folder: " + e.description;
return;n;
}
// exportation des images
try {
ExportImages(docObj, exportImageTools, folderName, fso);
} catch( e ) {
docObj.Action.Succeeded = false;
docObj.Action.ErrorMessage = "Error during export images: " + e.description;
return;
}
// création du fichier texte
fileName = fso.BuildPath(folderName, "doc.txt");
txtFile = fso.CreateTextFile(fileName, true);
// exportation des informations sur le document
ExportDocInfo( docObj, txtFile );
// exportation des champs
txtFile.WriteLine( "Fields:" );
try {
ExportFields( docObj.Children, txtFile, "" );
} catch( e ) { {
docObj.Action.Succeeded = false;
docObj.Action.ErrorMessage = "Error during export data: " + e.description;
txtFile.Close();
return;
}
txtFile.Close();
txtFile = 0;
fso = 0;
}
// Fonction d'exportation des images. Si une erreur survient lors de l'exportation des images,
// elle renvoie un message d'erreur ; sinon, elle renvoie une chaîne vide
function ExportImages( docObj, exportImageTools, exportFolder, fso )
{
// définition des paramètres d'exportation
var imageOptions = exportImageTools.NewImageSavingOptions();
imageOptions.Format = "bmp";
imageOptions.ColorType = "FullColor";
imageOptions.Resolution = 100;
// exportation page par page
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 );
}
}
// Procédure d'exportation des informations sur le document
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();
}
// Procédure d'exportation des champs depuis la collection de champs
function ExportFields(fields, txtFile, indent)
{
var i
for( i = 0; i < fields.Count; i++ ) {
ExportField( fields.Item(i), txtFile, indent );
}
}
// Vérifie si la valeur du champ est nulle
// Si la valeur du champ est invalide, toute tentative d'accès à ce champ (même
// pour vérifier si elle est nulle) peut lever une exception
function IsNullFieldValue( field )
{
try {
return ( field.Value == null );
} catch( e ) {
return true;
}
}
// Procédure d'exportation du champ
function ExportField(field, txtFile, indent)
{
// enregistrement du nom de fichier
txtFile.Write(indent + field.Name);
// enregistrement de la valeur du champ, si elle est accessible
if( IsNullFieldValue( field ) ) {
txtFile.WriteLine();
} else {
txtFile.WriteLine(" " + field.Text);
} }
if( field.Children != null ) {
// exportation des champs enfants
ExportFields( field.Children, txtFile, indent + " " );
} else if( field.Items != null ) {
// exportation des instances de champ
ExportFields( field.Items, txtFile, indent + " " );
}
}
// La fonction crée un dossier d'export et renvoie le chemin complet vers ce dossier
function CreateExportFolder(definitionName, fso)
{
var docFolder, folderName
// dossier principal
var exportFolder = "d:\\ScriptExport";
if( !fso.FolderExists(exportFolder) ) {
fso.CreateFolder (exportFolder);
} }
// le dossier de la définition de document spécifiée
docFolder = fso.BuildPath(exportFolder, definitionName);
if( !fso.FolderExists(docFolder) ) {
fso.CreateFolder(docFolder);
}
// le dossier du document exporté
var i = 1;
folderName = fso.BuildPath(docFolder, i);
while( fso.FolderExists(folderName) ) {
i++;
folderName = fso.BuildPath(docFolder, i);
}
fso.CreateFolder(folderName);
return folderName;
}
Utilisation d’un composant COM externe
dim autoExport
set autoExport = CreateObject( "AutomationExport.Exporter" )
autoExport.Export me, FCTools
var autoExport = new ActiveXObject("AutomationExport.Exporter");
autoExport.Export( this, FCTools );
Code de la classe Exporter en Visual Basic
Exporter du projet AutomationExport, utilisée dans les scripts précédents.
Option Explicit
Dim mFso As New Scripting.FileSystemObject
' La procédure effectue l'export du document : crée un dossier d'export et
' y enregistre les fichiers image de page, le fichier texte avec les champs du document,
' ainsi que les informations relatives au document
Public Sub Export(ByRef docObj As Object, ByRef FCTools As Object)
On Error GoTo err_h
Dim folderName As String
Dim txtFile As TextStream, fileName As String
Dim imageExportResult As String, errMessage As String
' création du dossier d'export
folderName = createExportFolder(docObj.definitionName)
If folderName = "" Then
docObj.Action.Succeeded = False
docObj.Action.ErrorMessage = "Cannot create export folder"
Exit Sub
End If
' exportation des images
imageExportResult = exportImages(docObj, FCTools, folderName)
' création du fichier texte
fileName = mFso.BuildPath(folderName, "doc.txt")
Set txtFile = mFso.CreateTextFile(fileName, True)
' enregistrement des informations sur les problèmes d'exportation des images
If imageExportResult <> "" Then
txtFile.WriteLine imageExportResult
errMessage = errMessage & imageExportResult
End If
' exportation des informations relatives au document
exportDocInfo docObj, txtFile
' exportation des champs
txtFile.WriteLine "Fields:"
If Not exportFields(docObj.Children, txtFile, "") Then
errMessage = errMessage & " Error during export data"
End If
txtFile.Close
' si des erreurs surviennent lors de l'export, réinitialiser
' l'indicateur de réussite de l'export à False
If errMessage <> "" Then
docObj.Action.Succeeded = False
docObj.Action.ErrorMessage = errMessage
End If
Set txtFile = Nothing
Set mFso = Nothing
Exit Sub
err_h:
docObj.Action.Succeeded = False
docObj.Action.ErrorMessage = Err.Description
txtFile.Close
Set mFso = Nothing
End Sub
' Fonction d'exportation des images. Si une erreur survient lors de l'exportation des images,
' elle retourne un message d'erreur, sinon elle retourne une chaîne vide
Private Function exportImages(ByRef docObj As Object, ByRef FCTools As Object, _
ByVal exportFolder As String) As String
On Error GoTo err_h
Dim pages As Object, page As Object, imageOptions As Object
Dim fileName As String, pageNum As Long
exportImages = ""
' définition des paramètres d'export
Set imageOptions = FCTools.NewImageSavingOptions
imageOptions.Format = "png"
imageOptions.ColorType = "GrayScale"
imageOptions.Resolution = 300
' exportation page par page
Set pages = docObj.pages
pageNum = 1
For Each page In pages
fileName = mFso.BuildPath(exportFolder, page.definitionName + "_page" & pageNum & "." & imageOptions.Format)
page.SaveAs fileName, imageOptions
pageNum = pageNum + 1
Next page
Exit Function
err_h:
exportImages = Err.Description
End Function
' La procédure qui exporte les informations relatives au document
Private Sub exportDocInfo(ByRef docObj As Object, ByRef txtFile As TextStream)
On Error GoTo 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
Exit Sub
err_h:
txtFile.WriteLine Err.Description
End Sub
' La procédure qui exporte les champs depuis la collection de champs
Private Function exportFields(ByRef fields As Object, ByRef txtFile As TextStream, ByVal indent As String) As Boolean
On Error GoTo err_h
Dim curField As Object
exportFields = True
For Each curField In fields
If Not exportField(curField, txtFile, indent) Then
exportFields = False
End If
Next curField
Exit Function
err_h:
txtFile.WriteLine Err.Description
exportFields = False
End Function
' Vérifie si la valeur du champ est nulle
' Si la valeur est invalide, toute tentative d'accès à ce champ (même
' pour vérifier si elle est nulle) peut provoquer une exception
Function IsNullFieldValue(ByRef field As Object) As Boolean
On Error GoTo err_h
IsNullFieldValue = IsNull(field.Value)
Exit Function
err_h:
IsNullFieldValue = True
End Function
' Fonction d'exportation du champ
Private Function exportField(ByRef field As Object, ByRef txtFile As TextStream, _
ByVal indent As String) As Boolean
On Error GoTo err_h
Dim result As Boolean
result = True
' enregistrement du nom du champ
txtFile.Write (indent & field.Name)
' enregistrement de la valeur du champ si elle est accessible
If Not IsNullFieldValue(field) Then
txtFile.WriteLine (" " & field.Value)
Else
txtFile.WriteLine
End If
If Not field.Children Is Nothing Then
' exportation des champs enfants
result = result And exportFields(field.Children, txtFile, indent & " ")
ElseIf Not field.Items Is Nothing Then
' exportation des instances du champ
result = result And exportFields(field.Items, txtFile, indent & " ")
End If
exportField = result
Exit Function
err_h:
txtFile.WriteLine Err.Description
exportField = False
End Function
' La fonction crée un dossier d'export et retourne le chemin complet vers ce dossier
Private Function createExportFolder(ByVal definitionName As String) As String
On Error GoTo err_h
Dim docFolder As String, folderName As String
' dossier principal
Const exportFolder = "d:\AutomationExport"
If mFso.FolderExists(exportFolder) = False Then
mFso.CreateFolder (exportFolder)
End If
' le dossier de la définition de document spécifiée
docFolder = mFso.BuildPath(exportFolder, definitionName)
If mFso.FolderExists(docFolder) = False Then
mFso.CreateFolder (docFolder)
End If
' le dossier du document exporté
Dim i As Long
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
Exit Function
err_h:
createExportFolder = ""
End Function
Utiliser un composant .NET écrit en C#
1
Créer un projet ClassLibrary
Créez un projet de type
ClassLibrary.2
Ajouter la référence ControllerInterop.dll
Ajoutez
ControllerInterop.dll aux References du projet. ABBYY.FlexiCapture apparaît dans la liste References, et toutes les interfaces des objets script deviennent disponibles dans le projet.3
Définir la dispinterface, la classe et le ProgId
Définissez la dispinterface et la classe qui implémente cette interface, ainsi que le
ProgId. Cela permet d’utiliser le composant .NET depuis le code script comme s’il s’agissait d’un composant ActiveX.4
Enregistrer la bibliothèque de types générée
Après avoir compilé le projet, enregistrez la bibliothèque de types générée. Pour le faire automatiquement, activez l’option correspondante dans les Propriétés du projet.
5
Appeler le composant depuis le code d’export
Depuis le code d’export, appelez la méthode du composant de la manière habituelle, comme dans l’exemple suivant.
dim autoExport
set autoExport = CreateObject( "ExportLibrary1.Export" )
autoExport.ExportDocument me, FCTools
var autoExport = new ActiveXObject("ExportLibrary1.Export"); autoExport.ExportDocument( this, FCTools );
using System;
using System.Runtime.InteropServices;
using System.IO;
using ABBYY.FlexiCapture;
namespace ExportLibrary1
{
// L'interface du composant d'exportation accessible depuis le script
// Lors de la création d'un nouveau composant, générez un nouveau GUID
[Guid("32B10C3B-EEA3-4194-B0A0-E358C310225A")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface _cExport
{
[DispId(1)]
void ExportDocument(ref IExportDocument DocRef, ref FCTools Tools);
}
// La classe qui implémente les fonctionnalités du composant d'exportation
// Lors de la création d'un nouveau composant, générez un nouveau GUID
// et définissez votre ProgId
[Guid("3BA19BD7-C6DC-4f63-BC08-0D95254DADC3")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("ExportLibrary1.Export")]
[ComVisible(true)]
public class Export : _cExport
{
public Export()
{
}
// La fonction effectue l'exportation du document : crée un dossier d'exportation et
// y enregistre les fichiers d'image de page,
// le fichier texte avec les champs du document, ainsi que les informations sur le document
public void ExportDocument( ref IExportDocument docRef, ref FCTools FCTools )
{
try
{
string exportFolder = createExportFolder( docRef.DefinitionName );
exportImages( docRef, FCTools, exportFolder );
// création du fichier texte
string fileName = exportFolder + "//" + "doc.txt";
StreamWriter sw = File.CreateText( fileName );
// exportation des informations sur le document
exportDocInfo( docRef, sw );
// exportation des champs
sw.WriteLine( "Fields:" );
exportFields( docRef.Children, sw, "" );
sw.Close();
}
catch( Exception e )
{
docRef.Action.Succeeded = false;
docRef.Action.ErrorMessage = e.ToString();
}
}
// La fonction crée un dossier d'exportation et renvoie le chemin complet vers ce dossier
private string createExportFolder(string definitionName )
{
string docFolder, folderName;
// dossier principal
string exportFolder = "d:\\DotNetExport";
if( !Directory.Exists(exportFolder) )
{
Directory.CreateDirectory(exportFolder);
}
// le dossier de la définition de document spécifiée
docFolder = exportFolder + "\\" + definitionName;
if( !Directory.Exists(docFolder) )
{
Directory.CreateDirectory( docFolder );
}
// le dossier du document exporté
int i = 1;
folderName = docFolder + "\\" + i;
while( Directory.Exists(folderName) )
{
i++;
folderName = docFolder + "\\" + i;
}
Directory.CreateDirectory(folderName);
return folderName;
}
// Fonction d'exportation des images
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++;
}
}
// Exportation des informations sur le document
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();
}
// Exportation de la collection de champs
private void exportFields( IExportFields fields, StreamWriter sw, string indent )
{
foreach( IExportField curField in fields )
{
exportField( curField, sw, indent );
}
}
// Vérifie si la valeur du champ est nulle
// Si la valeur du champ est invalide, toute tentative d'accès à ce champ (même
// pour vérifier si elle est nulle) peut lever une exception
private bool IsNullFieldValue( IExportField field )
{
try
{
return ( field.Value == null );
}
catch( Exception e )
{
return true;
}
}
// Exportation du champ spécifié
private void exportField( IExportField field, StreamWriter sw, string indent )
{
// enregistrement du nom du champ
sw.Write( indent + field.Name );
// enregistrement de la valeur du champ si elle est accessible
if( IsNullFieldValue( field ) )
{
sw.WriteLine();
}
else
{
sw.WriteLine( " " + field.Text );
}
if( field.Children != null )
{
// exportation des champs enfants
exportFields( field.Children, sw, indent + " " );
}
else if( field.Items != null )
{
// exportation des instances de champ
exportFields( field.Items, sw, indent + " " );
}
}
}
}
Écrire un gestionnaire d’export
dim curDoc
dim fso, fileErrorName, txtErrorFile, fileSucceedName, txtSucceedFile
set fso = CreateObject("Scripting.FileSystemObject")
' création du fichier pour les documents en échec
fileErrorName = "d:\ExportResults\ErrorsDocuments.txt"
set txtErrorFile = fso.CreateTextFile( fileErrorName, true )
' création du fichier pour les documents exportés avec succès
fileSucceedName = "d:\ExportResults\SucceedDocuments.txt"
set txtSucceedFile = fso.CreateTextFile( fileSucceedName, true )
dim i, exprortResult, docInfo
' parcours de la collection de documents exportés
for i = 0 To me.Count - 1
set exportResult = me.Item(i)
docInfo = "DocumentId:" & exportResult.Document.Id
if exportResult.Succeeded then
docInfo = docInfo & " - Exported successfully."
txtSucceedFile.WriteLine docInfo
else
docInfo = docInfo & " - Export error: " & exportResult.ErrorMessage
txtErrorFile.WriteLine docInfo
endif
next
txtErrorFile.Close
txtSucceedFile.Close
var fso = new ActiveXObject("Scripting.FileSystemObject");
// création du fichier avec les documents en échec
var fileErrorName = "d:\\ExportResults\\ErrorsDocuments.txt";
var txtErrorFile = fso.CreateTextFile( fileErrorName, true );
// création du fichier avec les documents exportés avec succès
var fileSucceedName = "d:\\ExportResults\\SucceedDocuments.txt"
var txtSucceedFile = fso.CreateTextFile( fileSucceedName, true );
var i
// itération de la collection de documents exportés
for( i = 0; i < Documents.Count; i++ ) {
var curDoc = Documents.Item( i );
var docInfo = "DocumentId: " + curDoc.Id;
if( curDoc.Action.Succeeded ) {
docInfo = docInfo + ". Exported successfully. Result:" + curDoc.Action.Result;
txtSucceedFile.WriteLine( docInfo );
} else {
docInfo = docInfo + ". Export error: " + curDoc.Action.ErrorMessage + " Result:" + curDoc.Action.Result;
txtErrorFile.WriteLine( docInfo );
}
}
txtErrorFile.Close();
txtSucceedFile.Close();
Accéder aux fichiers source dans des formats Office courants
using System;
using System.IO;
using System.Collections.Generic;
// Parcourir les pages.
for( int i = 0; i<Document.Pages.Count; i++ ) {
IPage page = Document.Pages[i];
// Vérifier s'il existe un fichier source.
if( page.SourceFileGUID == "" ) {
continue;
}
// Le nom d'origine du fichier.
string sourceFileName = @"";
// Indiquer le nom de fichier d'origine.
if( page.ImageSourceType == @"File" ) {
sourceFileName = Path.GetFileName( page.ImageSource );
} else if( page.ImageSourceType == @"Scanner" || page.ImageSourceType == @"Custom" ) {
sourceFileName = Path.GetFileName( page.ImageSourceFileSubPath );
}
// Supprimer l'extension du nom de fichier.
if( sourceFileName != @"" ) {
sourceFileName = Path.GetFileNameWithoutExtension( sourceFileName ) + @".";
}
// Nom de fichier source unique (nom d'origine + guid).
string sourceFileUniqueName = sourceFileName + page.SourceFileGUID;
// Chemin vers le dossier où le fichier source doit être enregistré.
string sourceFilePath = Document.Batch.Project.ExportRootPath + @"\" + sourceFileUniqueName;
// Vérifier que le fichier n'existe pas.
if( File.Exists( sourceFilePath ) ) {
continue;
}
// Enregistrer le fichier.
Processing.ReportMessage( "Saving source file: " + sourceFileUniqueName );
page.SaveSourceFile( sourceFilePath );
}
