Get a Session Context
Use of the PDF Export API requires the following steps:
- Dynamically load the
kvpdfshared library. - Obtain a handle to the
KVPDFGetInterfacefunction. - Call the
KVPDFGetInterfacefunction to obtain function pointers for the library methods. - Call the
fpInit()function pointer to initialize File Content Extraction. - Perform any necessary tasks using the Export API.
- Call
fpShutdown()to close down File Content Extraction. - Free the
kvpdflibrary.
The code you use to load the library at the start and free the library at the end depends on your operating system. See Use the kvpdf library on Windows and Use the kvpdf library on Linux
After you have obtained the function pointer for the KVPDFGetInterface function, you can use it to get pointers to the other functions. These include fpInit(), which you must use to initialize File Content Extraction before any other call, and fpShutdown() which must be the last call you make, to shutdown File Content Extraction and free its resources. See Export a File to PDF and Obtain File Format Information.
The following examples describe how to load the kvpdf library and obtain the KVPDFGetInterface function pointer (fpGetInterface() in the example code).
Use the kvpdf library on Windows
In the following example, pszPathOfkvpdfdll is the path to the kvpdf dynamic library, for example C:\MicroFocus\KeyviewExportSDK-12.3.0\WINDOWS_X86_64\bin\kvpdf.dll.
#include "kvpdf.h"
#include <windows.h>
#include <stdio.h>
void usePDFExport(const char* const pszPathOfkvpdfdll)
{
HMODULE hMODULE = LoadLibraryA(pszPathOfkvpdfdll);
if (hMODULE)
{
KVPDF_GET_INTERFACE fpGetInterface =
(KVPDF_GET_INTERFACE) GetProcAddress(
hMODULE, "KVPDFGetInterface"
);
if (fpGetInterface)
{
KVPDFInterface sInterface = {0};
KVStructInit(&sInterface);
if(fpGetInterface(&sInterface))
{
// Code using PDF Export
}
}
FreeLibrary(hMODULE);
}
}
Use the kvpdf library on Linux
In the following example, pszPathOfkvpdfso is the path to the kvpdf dynamic library, for example /opt/MicroFocus/KeyviewExportSDK-12.3.0/LINUX_X86_64_LIBC6/bin/kvpdf.so.
#include "kvpdf.h"
#include <dlfcn.h>
void usePDFExport(const char* const pszPathOfkvpdfso)
{
void *libHandle = dlopen(pszPathOfkvpdfso, RTLD_LAZY);
if (libHandle)
{
KVPDF_GET_INTERFACE fpGetInterface =
dlsym(libHandle, "KVPDFGetInterface");
if (fpGetInterface)
{
KVPDFInterface sInterface = {0};
KVStructInit(&sInterface);
if(fpGetInterface(&sInterface))
{
// Code using PDF Export
}
}
dlclose(libHandle);
}
}