PDF Core Library
Introduction
PDF Core Library is one of the layer of PDF-XChange Editor SDK and PDF-XChange Core PDF SDK. Interfaces of this layer provides an access to high level objects of PDF file, such as document, pages, annotations, form fields, etc.
It allows creation of new document as well as modification of existing documents. It also contains method to render PDF pages to devices or to image.
PDF-XChange Core SDK
If PDF-XChange Core PDF SDK is used, it must be initialized by call IPXC_Inst::Init method and should be finalized by call IPXC_Inst::Finalize method. This method will have no effect in PDF-XChange Editor SDK.
PDF-XChange Core SDK consists of one DLL and can be used without registration it as COM server. To start using the PDF-XChange Core SDK developer must create an instance of IPXC_Inst object. There are several ways to do that.
- If PDF-XChange Core SDK is used as registered COM server, IPXC_Inst object should be created using CoCreateInstance call:
HRESULT fGetInst(CComPtr<IPXC_Inst>& inst) { inst = nullptr; HRESULT hr = CoCreateInstance(__uuidof(PXC_Inst), nullptr, CLSCTX_INPROC_SERVER, __uuidof(IPXC_Inst), (void**)&inst); return hr; }
- If PDF-XChange Core SDK without registration COM server, function PXC_GetInstance, exported by SDK's DLL, should be called to get IPXC_Inst object:
typedef HRESULT (WINAPI *fnPXC_GetInstance)(IPXC_Inst** ppInst); HRESULT fGetInst(CComPtr<IPXC_Inst>& inst) { inst = nullptr; HMODULE hSDKInst = LoadLibrary(_T("PDFXCoreAPI.x64.dll")); if (hSDKInst == nullptr) return E_FAIL; fnPXC_GetInstance pfn = (fnPXC_GetInstance)GetProcAddress(hSDKInst, "PXC_GetInstance"); if (pfn == nullptr) return E_FAIL; HRESULT hr = pfn(&inst); return hr; }
When IPXC_Inst is received, its method Init must be called to initialize the SDK and pass proper serial key. Witout this call the SDK will not work.
PDF-XChange Editor SDK
In the PDF-XChange Editor SDK the IPXC_Inst is initialized by the SDK itself and methods Init and Finalize should not be used. IPXC_Inst object can be retrieved from PDF-XChange Editor SDK's main object in the following way:
HRESULT fGetInst(IPXV_Inst* pVInst, CComPtr<IPXC_Inst>& inst) { inst = nullptr; if (pVInst == nullptr) return E_INVALIDARG; CComPtr<IUnknown> pExt; HRESULT hr = pVInst->GetExtension(L"PXC", &pExt); if (FAILED(hr)) return hr; hr = pExt->QueryInterface<IPXC_Inst>(&inst); return hr; }