Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
#include "pch.h"
#include "comdef.h"
using namespace System;
String^ lateBinding(String^ file)
{
String^ text;
DISPID dispid;
DISPPARAMS dp = { NULL, NULL, 0, 0 };
VARIANTARG vargs[1];
VARIANT arg, result;
WCHAR str[255];
CLSID pclsid;
// Create ComHelper
IDispatch* comHelperPtr;
wcscpy_s(str, L"Aspose.Pdf.ComHelper");
CLSIDFromProgID(str, &pclsid);
HRESULT hr = CoCreateInstance(pclsid, NULL, CLSCTX_ALL, IID_IDispatch, (void**)&comHelperPtr);
if (FAILED(hr))
{
Console::WriteLine(L"Error occured");
}
else
{
// Set license
IDispatch* licPtr;
wcscpy_s(str, L"Aspose.Pdf.License");
CLSIDFromProgID(str, &pclsid);
HRESULT hr = CoCreateInstance(pclsid, NULL, CLSCTX_ALL, IID_IDispatch, (void**)&licPtr);
OLECHAR* setLicense = L"SetLicense";
hr = licPtr->GetIDsOfNames(IID_NULL, &setLicense, 1, GetUserDefaultLCID(), &dispid);
arg.vt = VT_BSTR;
BSTR lic = SysAllocString(L"C:\\Temp\\Aspose.Pdf.lic");
arg.bstrVal = lic;
vargs[0] = arg;
dp.rgvarg = vargs;
dp.cArgs = 1;
hr = licPtr->Invoke(dispid, IID_NULL, GetUserDefaultLCID(), DISPATCH_METHOD, &dp, &result, NULL, NULL);
SysFreeString(lic);
licPtr->Release();
// Get Document
OLECHAR* openFile = L"OpenFile";
hr = comHelperPtr->GetIDsOfNames(IID_NULL, &openFile, 1, GetUserDefaultLCID(), &dispid);
arg.vt = VT_BSTR;
arg.bstrVal = (BSTR)System::Runtime::InteropServices::Marshal::StringToBSTR(file).ToPointer();
vargs[0] = arg;
dp.rgvarg = vargs;
dp.cArgs = 1;
hr = comHelperPtr->Invoke(dispid, IID_NULL, GetUserDefaultLCID(), DISPATCH_METHOD, &dp, &result, NULL, NULL);
IDispatch* docPtr = result.pdispVal;
comHelperPtr->Release();
// Get Pages for the Document
OLECHAR* pages = L"Pages";
hr = docPtr->GetIDsOfNames(IID_NULL, &pages, 1, GetUserDefaultLCID(), &dispid);
dp.cArgs = 0;
hr = docPtr->Invoke(dispid, IID_NULL, GetUserDefaultLCID(), DISPATCH_PROPERTYGET, &dp, &result, NULL, NULL);
IDispatch* pagesPtr = result.pdispVal;
// Create Absorber
IDispatch* absorberPtr;
wcscpy_s(str, L"Aspose.PDF.Text.TextAbsorber");
CLSIDFromProgID(str, &pclsid);
hr = CoCreateInstance(pclsid, NULL, CLSCTX_ALL, IID_IDispatch, (void**)&absorberPtr);
// Browse text
arg.vt = VT_DISPATCH;
arg.pdispVal = absorberPtr;
vargs[0] = arg;
dp.rgvarg = vargs;
dp.cArgs = 1;
OLECHAR* accept_4 = L"Accept_4";
hr = pagesPtr->GetIDsOfNames(IID_NULL, &accept_4, 1, GetUserDefaultLCID(), &dispid);
hr = pagesPtr->Invoke(dispid, IID_NULL, GetUserDefaultLCID(), DISPATCH_METHOD, &dp, &result, NULL, NULL);
// Retrieve text
OLECHAR* _text = L"Text";
dp.cArgs = 0;
hr = absorberPtr->GetIDsOfNames(IID_NULL, &_text, 1, GetUserDefaultLCID(), &dispid);
hr = absorberPtr->Invoke(dispid, IID_NULL, GetUserDefaultLCID(), DISPATCH_PROPERTYGET, &dp, &result, 0, 0);
text = gcnew String(result.bstrVal);
docPtr->Release();
pagesPtr->Release();
absorberPtr->Release();
}
return text;
}
int main(array<System::String^>^ args)
{
if (args->Length != 1)
{
Console::WriteLine("Missing parameters\nUsage:testCOM.exe <pdf file>");
return 0;
}
CoInitialize(NULL);
String^ text = lateBinding(args[0]);
CoUninitialize();
Console::WriteLine("Extracted text:");
Console::WriteLine("---\n{0}", text != nullptr ? text->Trim() : "<empty>");
Console::WriteLine("---");
return 0;
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.