Extraiga los archivos adjuntos de un PDF a través de C++

Cómo extraer archivos adjuntos de un PDF mediante programación con C++

Cómo extraer archivos adjuntos mediante la biblioteca C++

Para extraer archivos adjuntos en un archivo PDF, usaremos la API Aspose.PDF para C++, que es una API de manipulación de documentos rica en funciones, potente y fácil de usar para la plataforma cpp. Abra el administrador de paquetes NuGet, busque Aspose.pdf e instálelo. También puede usar el siguiente comando desde la consola de Package Manager.

Package Manager Console

PM > Install-Package Aspose.PDF.Cpp

Extraer archivos adjuntos del PDF C++


Necesita Aspose.PDF para C++ para probar el código en su entorno.

  1. Obtenga una colección de archivos incrustados.
  2. Obtenga el recuento de los archivos incrustados.
  3. Recorre la colección para obtener todos los archivos adjuntos.
  4. Compruebe si el objeto parámetro contiene los parámetros.
  5. Obtenga el archivo adjunto y escriba en un archivo o transmisión.

Extraer el archivo adjunto de un documento PDF

// Open document
auto pdfDocument = new Document(_dataDir + u"GetAlltheAttachments.pdf");

// Get embedded files collection
auto embeddedFiles = pdfDocument->get_EmbeddedFiles();

// Get count of the embedded files
Console::WriteLine(u"Total files : {0}", embeddedFiles->get_Count());

int count = 1;

// Loop through the collection to get all the attachments
for (auto fileSpecification : embeddedFiles)
{
	Console::WriteLine(u"Name: {0}", 
		fileSpecification->get_Name());
	Console::WriteLine(u"Description: {0}", 
		fileSpecification->get_Description());
	Console::WriteLine(u"Mime Type: {0}", 
		fileSpecification->get_MIMEType());

	// Check if parameter object contains the parameters
	if (fileSpecification->get_Params() != nullptr)
	{
	Console::WriteLine(u"CheckSum: {0}",
		fileSpecification->get_Params()->get_CheckSum());
	Console::WriteLine(u"Creation Date: {0}",
		fileSpecification->get_Params()->get_CreationDate());
	Console::WriteLine(u"Modification Date: {0}",
		fileSpecification->get_Params()->get_ModDate());
	Console::WriteLine(u"Size: {0}", 
		fileSpecification->get_Params()->get_Size());
}

// Get the attachment and write to file or stream
auto fileContent = MakeArray<uint8_t>(fileSpecification->get_Contents()->get_Length());
fileSpecification->get_Contents()->Read(fileContent, 0, fileContent->get_Length());
auto fileStream = System::IO::File::OpenWrite(_dataDir + u"test" + count + u"_out.txt");
fileStream->Write(fileContent, 0, fileContent->get_Length());
fileStream->Close();
count += 1;
}