Custom Module Creation
Kofax Capture Developer's Guide
91
About Document Routing Features
Document Routing includes the features described in this section.
Document GUID
When a custom module moves a document, its DocumentGUID is not changed, but its Page
ID is changed.
Tracking Statistics
As a custom module moves pages or documents from a parent batch to a child batch, user
tracking statistics data reflects the page movement from both the source and destination
batch.
Reference Batch ID
When a batch is created, the Kofax Capture system assigns it a Reference Batch ID. The
Reference Batch ID is a GUID for each originally created batch. However, it has the same
value for all batches created by calling CreateChildBatch from a parent batch.
This value is used to track the original batch and all child batches through the system. You
can use this value as a batch field, index field (for a document or folder), export, or PDF
header value.
Kofax Capture also adds the Reference Batch ID as a column in the StatsBatch table.
You can also use batch-specific Kofax Capture values as endorser values. In this case, the
Reference Batch ID is available, but it is not expanded.
Unsupported Features
The Document Routing feature does not support:
▪ Batch totals
▪ Partial batch export
▪ Folders
Using Kofax Transformation Modules
You can use the Document Routing feature as follows:
▪ In your own custom module, independent of Kofax Transformation Modules.
▪ Using only the Kofax Transformation Modules implementation of Document Routing.
Note  Kofax Transformation Modules stores data in its own external files. Using your own
custom module in conjunction with the Kofax Transformation Modules implementation may
have unpredictable results.
Using the Sample Custom Module
This section explains how to use the provided sample custom module (CMSplit), which
demonstrates the use of the Document Routing feature.
Convert pdf into html - SDK Library API:C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net, ASP.NET MVC, WinForms, WPF application
How to Convert PDF to HTML Webpage with C# PDF Conversion SDK
www.rasteredge.com
Convert pdf into html - SDK Library API:VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.net, ASP.NET MVC, WinForms, WPF application
PDF to HTML Webpage Converter SDK for VB.NET PDF to HTML Conversion
www.rasteredge.com
Custom Module Creation
92
Kofax Capture Developer's Guide
The sample custom module divides a batch based on form type. It creates new batches for
each form type except for the first form type identified. For example, if a batch contains
scanned documents based on three form types, the sample custom module divides the
existing batch into two additional batches. The original batch contains documents based only
on the first identified form type. If the original batch contains only one page or document, no
child batches are created.
In the workflow, the sample custom module is typically placed after the Recognition Server
module.
The sample custom module contains a single-form user interface that displays status only as it
processes batches (similar to the Separate sample custom module).
The sample custom module is located here:
<Kofax Capture Installation Folder>\Capture\Sample Projects\CustMod\CMSplit
CMSplit is written in VB.NET using .NET 4.0. The CMSplit sample shares code with the
Kofax Capture Separation Module sample (separate.exe).
Sample Custom Module
The sample program named DeleteEvenPage is an unattended module that is designed to
run after the Scan module. It checks that the pages marked for deletion are removed from the
batch.
The following is the code for the custom module named DeleteEvenPage. This class definition
makes up the blueprint for the custom module. In the Initialize function, we log into Kofax
Capture and cache the appropriate data structures.
DeleteEvenPage Module
Imports Kofax.Capture.DBLite
Imports Kofax.Capture.SDK.CustomModule
Imports Kofax.Capture.SDK.Data
Public Class Driver
'*** Reference to the Login object
Private m_oLogin As Kofax.Capture.DBLite.Login
'*** Reference to the RuntimeSession object
Private WithEvents m_oRuntimeSession As
Kofax.Capture.SDK.CustomModule.IRuntimeSession
'*** Reference to the Active Batch
Private m_oActiveBatch As Kofax.Capture.SDK.CustomModule.IBatch
'*** Create a mutex to protect calls to ProcessBatch
Private m_oMutex As Threading.Mutex
'*** We will fire this event when we want to log something to the window
Public Event StatusMessage(ByVal Message As String)
Public Sub Initialize()
Try
'*** Initialize the Mutex
m_oMutex = New Threading.Mutex
'*** Create the Login object
m_oLogin = New Kofax.Capture.DBLite.Login
'*** Log into Kofax Capture
m_oLogin.Login()
SDK Library API:C# PDF insert text Library: insert text into PDF content in C#.net
Parameters: Name, Description, Valid Value. value, The char wil be added into PDF page, 0
www.rasteredge.com
SDK Library API:C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net
with specified zoom value and save it into stream The magnification of the original PDF page size Description: Convert to DOCX/TIFF with specified resolution and
www.rasteredge.com
Custom Module Creation
Kofax Capture Developer's Guide
93
'*** Set the App name and version
m_oLogin.ApplicationName = "DeleteEventPage CM"
m_oLogin.Version = "1.0"
'*** Validate the User
m_oLogin.ValidateUser("DeleteEvenPage.exe", True)
RaiseEvent StatusMessage("Logged into Kofax Capture")
'*** Cache the Runtime Session
m_oRuntimeSession = m_oLogin.RuntimeSession
'*** Add a handler function to handle Batch available event
AddHandler m_oRuntimeSession.BatchAvailable, AddressOf
RuntimeSession_BatchAvailable
Catch ex As Exception
RaiseEvent StatusMessage("An error occurred: " & ex.Message)
End Try
End Sub
End Class
PageMarkedForDeletion Function
The PageMarkedForDeletion function returns a flag that indicates that the scan operator
selected the page to be deleted. This flag is stored in a page-level custom storage string file.
Private Function PageMarkedForDeletion(ByRef oPageElem As
Kofax.Capture.SDK.Data.IACDataElement) As Boolean
'*** Get the Page Custom Storage Strings
Dim oPageCSSs As Kofax.Capture.SDK.Data.IACDataElement
oPageCSSs = oPageElem.FindChildElementByName("PageCustomStorageStrings")
'*** Get the Page Custom Storage String by element
Dim oPageDeleteCSS As Kofax.Capture.SDK.Data.IACDataElement
oPageDeleteCSS =
oPageCSSs.FindChildElementByAttribute("PageCustomStorageString", "Name",
"DeletePage")
'*** Make sure we have a reference
If Not oPageDeleteCSS Is Nothing Then
'*** Check the value
If oPageDeleteCSS.AttributeValue("Value") = "True" Then
Return True
End If
End If
Return False
End Function
RuntimeSession_BatchAvailable Subroutine
This function handles the BatchAvailable event from Kofax Capture. This handler attempts
to process as many batches as possible. A mutex is implemented to ensure that this logic is
processed by only one thread at a time.
Private Sub RuntimeSession_BatchAvailable()
'*** Lock access to this call
m_oMutex.WaitOne()
Try
'*** Process a new Batch
While ProcessNewBatch()
RaiseEvent StatusMessage("Process Batch Completed")
End While
Catch ex As Exception
RaiseEvent StatusMessage("An error occurred: " & ex.Message)
Finally
'*** Release the mutex
m_oMutex.ReleaseMutex()
End Try
End Sub
SDK Library API:C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
with specified zoom value and save it into stream The magnification of the original PDF page size Description: Convert to DOCX/TIFF with specified resolution and
www.rasteredge.com
SDK Library API:C# PDF insert image Library: insert images into PDF in C#.net, ASP
Import graphic picture, digital photo, signature and logo into PDF document. Merge several images into PDF. Insert images into PDF form field.
www.rasteredge.com
Custom Module Creation
94
Kofax Capture Developer's Guide
ProcessNewBatch Function
The ProcessNewBatch function attempts to open the next available batch for this module. If
it is able to open a batch, the batch is processed by removing the pages that the scan operator
marked for deletion.
'*** This function returns True if we successfully process a Batch.
'*** Otherwise, we will return False (i.e. No Batches Available)
Private Function ProcessNewBatch() As Boolean
Dim bResult As Boolean = False
Try
'*** Get the new Batch
m_oActiveBatch = m_oRuntimeSession.NextBatchGet(m_oLogin.ProcessID, _
KfxDbFilter.KfxDbFilterOnProcess Or KfxDbFilter.KfxDbFilterOnStates Or
KfxDbFilter.KfxDbSortOnPriorityDescending, _
KfxDbState.KfxDbBatchReady Or KfxDbState.KfxDbBatchSuspended)
'*** Make sure we have a reference
If Not m_oActiveBatch Is Nothing Then
RaiseEvent StatusMessage("Opened Batch: " & m_oActiveBatch.Name)
'*** Extract the RuntimeDataElement
Dim oRuntimeDataElement As Kofax.Capture.SDK.Data.IACDataElement = Nothing
oRuntimeDataElement = m_oActiveBatch.ExtractRuntimeACDataElement(0)
'*** Get the Batch element
Dim oBatchElem As Kofax.Capture.SDK.Data.IACDataElement = Nothing
oBatchElem = oRuntimeDataElement.FindChildElementByName("Batch")
'*** Get the Pages element
Dim oPagesElem As Kofax.Capture.SDK.Data.IACDataElement = Nothing
oPagesElem = oBatchElem.FindChildElementByName("Pages")
'*** Keep track of the Page Count
Dim lngCount As Long = 0
'*** Iterate through the Page elements
Dim oPageElem As Kofax.Capture.SDK.Data.IACDataElement
For Each oPageElem In oPagesElem.FindChildElementsByName("Page")
'*** Increment our counter
lngCount = lngCount + 1
'*** Check if we should delete this page
If PageMarkedForDeletion(oPageElem) Then
'*** Delete it!
oPageElem.Delete()
RaiseEvent StatusMessage("Deleted Page " & lngCount)
End If
Next
'*** Close the Batch
m_oActiveBatch.BatchClose(KfxDbState.KfxDbBatchReady,
KfxDbQueue.KfxDbQueueNext, 0, "")
'*** Return success
bResult = True
Else
RaiseEvent StatusMessage("No batches for me available.")
'*** Return false so we fall back into polling/waiting for signal
bResult = False
End If
Catch ex As Exception
RaiseEvent StatusMessage("An error occurred: " & ex.Message)
'*** If we have a reference to the Batch object, close in error
If Not m_oActiveBatch Is Nothing Then
m_oActiveBatch.BatchClose(KfxDbState.KfxDbBatchError, _
KfxDbQueue.KfxDbQueueException, 1000, ex.Message)
End If
End Try
Return bResult
End Function
SDK Library API:Online Convert PDF to HTML5 files. Best free online PDF html
Download Free Trial. Convert a PDF file to HTML. Just upload your file by clicking on the blue button or drag-and-drop your pdf file into the drop area.
www.rasteredge.com
SDK Library API:VB.NET PDF insert image library: insert images into PDF in vb.net
project. Import graphic picture, digital photo, signature and logo into PDF document. Add file. Insert images into PDF form field in VB.NET. An
www.rasteredge.com
Kofax Capture Developer's Guide
95
Chapter 8
Creating an Export Connector
Export is the process of exporting images and data to long-term storage after all Kofax
Capture processing is finished. An export connector consists of two COM components that
configure and execute this process. These two components could be in one or two .dll or .exe
files.
Kofax Capture includes the following standard export connectors:
▪ A database export connector that exports document index data to a Microsoft Access 97 or
later, or an ODBC-compliant database. Source code for this export connector is installed to
<
Kofax Capture installation folder>\Source\Export Connectors\Database
.
▪ A text export connector that exports document index data to an ASCII text file. Source code
for this export connector is installed to <
Kofax Capture installation folder>\Source
\Export Connectors\KCEC-Text
.
Both of these connectors export images, full text OCR files, and PDF files to the standard file
system.
These export connectors are provided in Microsoft Visual Basic .NET. The source code for
these export connectors is installed with Kofax Capture. If you need to export document
index data or files to other sources, you can modify one of the supplied connectors, create an
entirely new one, or purchase one from Kofax or other third-party entities.
A wide variety of export connectors are available from Kofax for use with applications
developed by Documentum, IBM FileNet, SharePoint, and others. Contact your Certified
Solutions Provider for details on availability.
Export connectors are typically written in Visual Basic .NET, but they can also be written with
any tool that supports the development of COM servers.
Kofax Capture Export Type Library
The export connector API library is documented in the Kofax Capture Export Type Library API
Reference.
1
On your Kofax Capture 10.1 installation media, navigate to the following location:
Documentation\Help\APIRef
2
Double-click APIRefExport.chm.
The Kofax Capture Export Type Library API Reference appears in a browser window.
Note  If the API Reference does not display properly, copy APIRefExport.chm to a local
drive.
SDK Library API:C# PDF File Split Library: Split, seperate PDF into multiple files
Divide PDF File into Two Using C#. This is an C# example of splitting a PDF to two new PDF files. Split PDF Document into Multiple PDF Files in C#.
www.rasteredge.com
SDK Library API:VB.NET PDF File Split Library: Split, seperate PDF into multiple
Split PDF file into two or multiple files in ASP.NET webpage online. Support to break a large PDF file into smaller files in .NET WinForms.
www.rasteredge.com
Creating an Export Connector
96
Kofax Capture Developer's Guide
Kofax Capture and the Export Process
The Kofax Capture Administration module manages the Export Setup process. It loads
the export connector setup when the system administrator selects an export connector
for a document class/batch class pair. The export connector setup must implement the
KfxReleaseSetupScript COM interface required by the Administration module.
Similarly, the Kofax Capture Export module manages the export process. It loads the
appropriate export connector when the batch enters the Export queue. The export connector
must implement the KfxReleaseScript COM interface required by the Export module.
The Database and the Text export connectors include the KfxReleaseSetupScript and
KfxReleaseScript COM components in the ActiveX DLL.
When writing an export connector, you must provide two basic functions:
▪ Export connector setup, which is the user interface for configuring the export process
within the Administration module. The export connector setup is called by the
Administration module when the user selects an export connector to configure.
▪ Export, which performs the actual export of images and data to long-term storage. The
export portion of the export connector is called by the Export module when it is exporting
batches.
Requirements for the Export Connector Setup
The export connector setup component must define the KfxReleaseSetupScript COM
interface.
The KfxReleaseSetupScript interface must include the following:
▪ One public object variable declared as ReleaseSetupData. The Administration module uses
this variable to expose and update export configuration for the document class.
▪ Four methods called OpenScript, RunUI, ActionEvent, and CloseScript, which the
Administration program calls to perform the various stages of the export setup process.
When you use the Administration program to select and configure an export connector the
first time, it loads the export connector setup and does the following:
1
Fills in the document class properties in the ReleaseSetupData variable. These properties
include the available document class index fields, batch class fields, and image file
formats.
2
Calls the OpenScript method. You should use this method to perform any initialization
required for the connector.
3
Calls the RunUI method. You should use this method to load a form or window that
allows the user to configure the export process. For example, the database export
connector displays a form that allows setup of database links, image formats, file folders,
and so forth. When the user is finished with setup, you store the user’s choices in the
ReleaseSetupData variable and call the ReleaseSetupData.Apply method to save them
permanently to the Administration database.
4
Calls the CloseScript method after the RunUI method is completed and the connector is
about to be unloaded. You should use this method to perform any cleanup required for
the connector.
If you make a change to the document class after the initial export setup process, the
Administration program performs the same series of steps as before, with one exception:
Creating an Export Connector
Kofax Capture Developer's Guide
97
instead of calling the RunUI method, it calls the ActionEvent method with a set of parameters
that indicate why it is being called. You should use this method to determine whether the
change in the document class requires a change in the export setup process. For example,
if a new index field is added, you might want to call the RunUI method to provide an
opportunity to save this new data in the external database.
Requirements for the Export Connector
The Export module uses a COM interface called KfxReleaseScript to communicate with the
export connector. The standard Text and Database export connectors define this interface in
the Release.cls code module.
The KfxReleaseScript interface must include the following:
▪ One public object variable declared as ReleaseData. The Export module uses this variable
to expose export data for the export process.
▪ Three methods called OpenScript, ReleaseDoc, and CloseScript, which the Export module
calls to perform the various stages of the export process.
When a batch containing documents of a given class enters the Export module, it loads the
export connector and does the following:
1 Fills in the general batch class and document class properties in the ReleaseData variable.
2 Calls the OpenScript method. You should use this method to perform any initialization
required for the connector.
3 Fills in the properties specific to the first document to be exported in the ReleaseData
variable and calls the ReleaseDoc method for the document. You should use this method
to save the document data in the external database and copy the image files and full text
OCR files to the selected export folders.
4 Repeats the process described in Step 3 for each remaining document to be exported.
5 Calls the CloseScript method after the last ReleaseDoc method is completed and the
connector is about to be unloaded. You should use this method to perform any cleanup
required for the connector.
Note that you cannot provide your own user interface for the export process. The Export
module has its own user interface. The various methods listed earlier provide data to update
the Export module user interface as documents and batches complete the export process. The
export process is designed to run unattended.
ReleaseSetupData and ReleaseData Objects
The database export connector and text export connector support a wide variety of features,
and both contain a long list of functions and subroutines. These functions are documented in
the Kofax Capture Export Type Library API Reference.
Writing an export connector is not actually as complex as you may think. Most of the required
work is confined to specific locations in the connector. The code involves use of the methods
and properties for the ReleaseSetupData and ReleaseData objects. Understanding these two
objects is key to writing an export connector.
Creating an Export Connector
98
Kofax Capture Developer's Guide
Export Connector Setup
There are only two places in the export connector setup where you have to write a substantial
amount of code:
▪ The RunUI event should load a form that presents a user interface. This form can be as
simple or as complex as you wish.
▪ When the user clicks OK to finish export connector setup, you must save the user’s settings
in the Kofax Capture database. To do this, you must set up a links collection that specifies
which index fields should be exported and then copy other settings as necessary into
the ReleaseSetupData object. When this is finished, call the Apply method to save your
changes.
ReleaseSetupData Object
The ReleaseSetupData object is a top-level object used by both the Kofax Capture
Administration module and the export connector setup to define the export process for a
document class.
Some properties of this object are set up by the Administration module when the
ReleaseSetupData object is created. For example, the available batch fields, index fields, image
types, and storage types are set when the connector is loaded. The properties set up by the
Administration module are read-only.
The connector must set the properties that identify the external data repository and the target
export folders. It must also set the properties that establish the links between the available
data fields and the fields or columns in the external data repository that will receive the
document data during the subsequent export process. The properties will be available to the
export connector.
Refer to the Kofax Capture Export Type Library API Reference for details on the specific
properties and methods available in the ReleaseSetupData object.
Export Connector
There is only one place in the export connector where you need to write a significant amount
of code. The ReleaseDoc method is called every time the Export module is ready to export
a new document. To export a document, you need to add code to this method that calls the
following methods:
1
ReleaseData.ImageFiles.Copy copies the images to a location specified by the
ReleaseData object.
2
ReleaseData.TextFiles.Copy copies the full text OCR files (if any) to a location specified
by the ReleaseData object.
The index data must be exported last. The ReleaseData.Values collection contains values
for all the index fields specified in the links collection during export connector setup, but
there is no method provided for exporting index data, since the process varies widely
from connector to connector. You are responsible for writing the proper code to export
your index data to the appropriate repository.
3
ReleaseData.CopyKofaxPDFFile copies the PDF file that belongs to a document into the
export PDF path that is defined during export connector setup.
ReleaseData.CopyKofaxPDFFile copies the PDF file that belongs to a document into the
export PDF path that is defined during export connector setup.
Creating an Export Connector
Kofax Capture Developer's Guide
99
ReleaseData Object
The ReleaseData object is a top-level object used by both the Kofax Capture Export module
and the export connector to access the batch and document class information and perform the
actual document export.
All properties of this object are set up by the Export module. The properties that are common
to all documents in the batch are set up when the ReleaseData object is initialized. Properties
specific to an individual document are set up before the Export module calls the ReleaseDoc
method for that document.
The connector must use the ReleaseDoc method to read the properties and save the index
data and related document information in the external data repository. Then, the connector
must copy the image files, any Kofax PDF files, and any full text OCR files to the target file
system.
Refer to the Kofax Capture Export Type Library API Reference for details on the specific
properties and methods available in the ReleaseData object.
COM Servers: In-proc or Out-of-proc?
Export connectors can be developed using any language and tool that can create COM
components. If you are working with a 32-bit development environment, COM components
for both export connector setup and export can be designed as in-process servers (ActiveX
DLLs) or as out-of-process servers (ActiveX EXEs).
Registering Your Export Connector
After completing your export connector, you must register it. Registration is a two-part
process.
The .inf file, which should be located in the same folder as your compiled export connector,
has a format similar to that of an .ini file. A sample .inf file is shown here.
[Scripts]
Custom Script
[Custom Script]
SetupModule=Custom.dll
SetupProgID=Custom.kfxreleasesetupscript
SetupVersion=1.0
ReleaseModule=Custom.dll
ReleaseProgID=Custom.kfxreleasescript
ReleaseVersion=1.0
SupportsNonImageFiles=True
RemainLoaded=True
SupportsKofaxPDF=True
SupportsOriginalFileName=True
SupportsMultipleInstances=False
The .inf file must contain a [Scripts] section that includes the name (up to 255 characters) of
each connector you are registering. For each entry in the [Scripts] section, you must have a
corresponding section with the entries listed in the table.
Creating an Export Connector
100
Kofax Capture Developer's Guide
Table 8-1. Inf File Entries
Inf File Entry
Description
ReleaseModule
Name of the compiled .exe or .dll containing the export COM component.
ReleaseProgID
Name of the export connector COM component. You can explicitly set
the ProgID of your object using the ProgID Attribute. A ProgID is a
unique identifier for every control, constructed through the combination of
the control's project and object name (ProjectName.ObjectName).
ReleaseVersion
Version number assigned to the export connector COM component.
RemainLoaded
If True, the export connector remains loaded until processing is
complete.
SetupModule
Name of the compiled .exe or .dll containing the export connector setup
COM component.
SetupProgID
Name of the export connector setup COM component. You can explicitly
set the ProgID of your object using the ProgID Attribute. A ProgID is a
unique identifier for every control, constructed through the combination of
the control's project and object name (ProjectName.ObjectName).
SetupVersion
Version number assigned to the export connector setup COM
component.
SupportsKofaxPDF
If True, the export connector supports the output of Kofax PDF files.
SupportsNonImageFiles
If True, the export connector supports eDocuments (non-image files).
SupportsOriginalFileName
If True, the export connector supports the use of the original name of the
file.
SupportsMultipleInstances
If True, the export connector supports multiple instances of the Export
service. Note that the Multiple Instance Support feature is only available
for Kofax Capture Enterprise users.
1 Create an .inf file for your export connector.
2 In the Administration module, on the Tools tab, in the System group, click Export
Connectors.
3 On the Export Connector Manager window, select the connector to register.
4 Click Add, browse to your .inf file, and click Open.
5 Select the connector to use and click Install.
6 Click OK, and your export connector is registered.
7 Close all windows to complete the process.
Scripting in a High Availability Environment
When writing connectors for Kofax Capture in a high availability environment, you should
observe the error handling guidelines found in High Availability Environments
.
For more information on high availability, refer to the Kofax Capture Installation Guide.
Documents you may be interested
Documents you may be interested