Extraire les pièces jointes d’un PDF via C++

Comment extraire des pièces jointes d’un PDF par programme avec C++

Comment extraire des pièces jointes à l'aide de la bibliothèque C++

Afin d’extraire les pièces jointes dans un fichier PDF, nous utiliserons l’API Aspose.PDF for C++ qui est une API de manipulation de documents riche en fonctionnalités, puissante et facile à utiliser pour la plate-forme cpp. Ouvrez le gestionnaire de packages NuGet, recherchez Aspose.pdf et installez. Vous pouvez également utiliser la commande suivante depuis la console du gestionnaire de packages.

Package Manager Console

PM > Install-Package Aspose.PDF.Cpp

Extraire les pièces jointes du PDF C++


Vous avez besoin de Aspose.PDF pour C++ pour essayer le code dans votre environnement.

  1. Obtenez la collection de fichiers intégrés.
  2. Obtenez le nombre de fichiers intégrés.
  3. Parcourez la collection pour obtenir toutes les pièces jointes.
  4. Vérifiez si l’objet Parameter contient les paramètres.
  5. Récupérez la pièce jointe et écrivez-la dans un fichier ou un flux.

Extraire la pièce jointe d'un document 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;
}