Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Это простой пример кода на C++, чтобы извлечь текст из PDF-файлов с использованием COM Interop и раннего связывания. Перед запуском примера обратите внимание на то, что
// Cross-referenced type libraries:
и имеет одно или несколько #import. Просто скопируйте их в свой код перед импортом основной библиотеки типов и сделайте это в том же порядке. Таким образом, вы устраните первую проблему. Следующая проблема возникает из-за того, что среда C++ имеет большое количество макросов, предопределенных функций и т.д., которые могут конфликтовать с методами библиотеки типов. Например, GetType уже широко используется в C++, но также и в Aspose.PDF. Я нашел атрибуты rename и auto_rename директивы #import очень удобными для устранения возможных предупреждений и ошибок.
Для получения подробной информации, пожалуйста, посмотрите это сообщение.
Пример C++
#include "stdafx.h"
#import "C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Drawing.tlb"
#import "C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb" auto_rename
#import "C:\Temp\Aspose.PDF.tlb" rename("GetType", "GetType_") auto_rename
using namespace System;
String ^earlyBinding(String ^file)
{
String ^text;
// Create ComHelper
Aspose_Pdf::_ComHelperPtr comHelperPtr;
HRESULT hr = comHelperPtr.CreateInstance(__uuidof(Aspose_Pdf::ComHelper));
if (FAILED(hr))
{
Console::WriteLine(L"Error occured");
}
else
{
// Set license
Aspose_Pdf::_LicensePtr licPtr;
licPtr.CreateInstance(__uuidof(Aspose_Pdf::License));
licPtr->SetLicense("C:\\Temp\\Aspose.PDF.lic");
licPtr.Release();
// Get Document
Aspose_Pdf::_DocumentPtr docPtr;
docPtr = comHelperPtr->OpenFile((BSTR)System::Runtime::InteropServices::Marshal::StringToBSTR(file).ToPointer());
comHelperPtr.Release();
// Create Absorber
Aspose_Pdf::_TextAbsorberPtr absorberPtr;
HRESULT hRes = absorberPtr.CreateInstance(__uuidof(Aspose_Pdf::TextAbsorber));
// Browse text
docPtr->GetPages()->Accept_4(absorberPtr);
// Retrieve text
BSTR extractedText = absorberPtr->GetText();
text = gcnew String(extractedText);
docPtr.Release();
absorberPtr.Release();
}
return text;
}
int main(array<System::String ^> ^args)
{
CoInitialize(NULL);
if (args->Length != 1)
{
Console::WriteLine("Missing parameters\nUsage:testCOM <pdf file>");
return 0;
}
String ^text = earlyBinding(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.