# fpInit()

This function initializes an Export session. If initialization is successful, the `KVPDFContext` value pointed to by `pContext` is set to a valid context identifier. This context value must be passed as the first parameter to all other PDF Export functions.

DEPRECATED: The `fpInit()` function is deprecated in KeyView 12.7.0 and later. Micro Focus recommends that you use fpInitWithLicenseData() instead, so that your license key is passed to KeyView through the API. You should not include license information in your application as a file (`kv.lic`).

This function is still available for existing implementations, but it might be incompatible with new functionality. The function might be removed in future.

## Syntax

    KVPDFState pascal fpInit(
        const char* const pszKeyViewDir,
        const char* const pszTempFolder,
        KVPDFContext* const pContext);

## Arguments

`pszKeyViewDir` | A null-terminated C string that contains the path of the directory where the Export components are located. This is normally the directory `install\OS\bin`, where `install` is the path name of the Export installation directory and `OS` is the name of the operating system.
`pszTempFolder` | (Optional) A null-terminated C string that contains the path of a directory to use to store temporary files during the conversion process. Set this value to NULL to default to the system temporary directory.
`pContext` | A valid pointer to a value of type `KVPDFContext`. If initialization is successful, this target is set to a context-identifying value, which you must supply to subsequent export functions.

## Returns

- If the call is successful, a `KVPDFState` structure with `eErrorCode` set to `KVERR_Success`.

- If the call is unsuccessful, a `KVPDFState` structure that indicates the reason for the error.

## Discussion

- You can perform multiple calls to subsequent functions in serial using the same context (session).

- On Windows systems, specify the paths in the local Windows code page.

- To ensure multithreaded conversions are thread-safe, you must create a unique context pointer for every thread by calling `fpInit()`. In addition, threads must not share context pointers, and you must use the same context pointer for all API calls in the same thread.

- When the conversion context is no longer required, you must terminate by calling `fpShutdown()`. See fpShutDown().

- Internally, `KVPDFContext` is a pointer, and Micro Focus recommends that you initialize values of type `KVPDFContext` to NULL.

- If the call is unsuccessful, the value pointed to by `pContext` is not modified. No context has been created so there is no need to call `fpShutdown()`.

  IMPORTANT: It is not safe to call `fpShutdown()` with any value other than one arising from a successful call to `fpInit()` (or NULL).

_FT_HTML5_bannerTitle.htm