Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Este é um exemplo simples de código C++ para extrair texto de arquivos PDF usando COM Interop com vinculação antecipada. Antes de executar o exemplo, preste atenção que
// Cross-referenced type libraries:
e tem um ou mais #import’s. Basta copiá-los para o seu código antes de importar a biblioteca de tipos principal e faça isso na mesma ordem. Assim, você evitará o primeiro tipo de problema. O próximo tipo de problema vem do fato de que o ambiente C++ tem um grande número de macros, funções pré-definidas, etc., que podem entrar em conflito com os métodos da biblioteca de tipos. Por exemplo, GetType já foi amplamente utilizado em C++, mas também Aspose.PDF o possui. Eu encontrei os atributos rename e auto_rename da diretiva #import muito convenientes para se livrar de possíveis avisos e erros.
Para mais detalhes, consulte este post.
Exemplo em 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.