PDF est un format standard de partage de documents sur Internet. Sa prise en charge globale et sa mise en page cohérente en font un choix idéal pour de tels scénarios. Cependant, parfois, la taille des fichiers PDF a tendance à augmenter en raison de contenus tels que des images, des dessins, etc. Dans de tels scénarios, vous pouvez facilement optimiser ou compresser des fichiers PDF pour réduire leur taille sans compromettre leur qualité. À cette fin, cet article vous apprendra différentes techniques que vous pouvez utiliser pour compresser et optimiser les fichiers PDF afin de réduire leur taille à l’aide de C++.

API C++ pour la compression et l’optimisation des fichiers PDF

Aspose.PDF for C++ est une bibliothèque C++ qui vous permet de créer, lire et mettre à jour des documents PDF. Vous pouvez utiliser cette API pour compresser et optimiser des fichiers PDF volumineux afin de réduire leur taille tout en conservant leur qualité. Vous pouvez soit installer l’API via NuGet ou la télécharger directement à partir de la section downloads.

PM> Install-Package Aspose.PDF.Cpp

Optimiser les documents PDF pour le Web à l’aide de C++

Si vous souhaitez afficher les documents PDF sur le Web, les optimiser améliorera leur vitesse de chargement et améliorera ainsi l’expérience utilisateur. Afin d’optimiser les documents PDF, veuillez suivre les étapes ci-dessous.

L’exemple de code suivant montre comment optimiser des documents PDF pour le Web à l’aide de C++.

// Ouvrir le document PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Optimiser le document PDF
pdfDocument->Optimize();

// Enregistrez le document PDF
pdfDocument->Save(u"OutputDirectory\\Optimized_output.pdf");

Compresser et redimensionner des images dans des fichiers PDF à l’aide de C++

Si les fichiers PDF contiennent un grand nombre d’images, cela peut entraîner des tailles de fichiers importantes. Dans de tels fichiers, les images jouent un rôle important dans l’augmentation de leur taille. La compression et le redimensionnement des images dans ces fichiers entraîneraient une réduction notable de leur taille. Voici les étapes pour compresser et redimensionner les images dans un fichier PDF.

L’exemple de code suivant montre comment compresser et redimensionner des images pour réduire la taille du fichier PDF à l’aide de C++.

// Ouvrir le document PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Créer une instance de la classe OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Compressez et redimensionnez les images et définissez leur qualité et leur résolution
options->get_ImageCompressionOptions()->set_CompressImages(true);
options->get_ImageCompressionOptions()->set_ImageQuality(10);
options->get_ImageCompressionOptions()->set_MaxResolution(150);
options->get_ImageCompressionOptions()->set_ResizeImages(true);

// Optimiser les ressources dans le document
pdfDocument->OptimizeResources(options);

// Enregistrez le document PDF
pdfDocument->Save(u"OutputDirectory\\Compressed_PDF_With_Images.pdf");

Pour réduire davantage la taille du fichier, vous pouvez également supprimer les polices intégrées du fichier. Il existe deux stratégies pour supprimer les polices incorporées ; la première est que vous supprimez toutes les polices intégrées et la seconde est que vous ne supprimez que le sous-ensemble de polices inutilisées. De plus, vous pouvez également supprimer les flux inutilisés et lier les flux en double pour réduire la taille supplémentaire. Voici les étapes pour appliquer les modifications discutées précédemment à un fichier PDF.

L’exemple de code suivant montre comment réduire la taille du fichier PDF en désincorporant les polices et en supprimant les flux et les objets inutilisés à l’aide de C++.

// Ouvrir le document PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Créer une instance de la classe OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Soit
// Désintégrer toutes les polices dans le PDF
options->set_UnembedFonts(true);

// OU
// Conservez uniquement les polices intégrées pour les caractères utilisés
options->set_SubsetFonts(true);

// Lier les flux en double
options->set_LinkDuplcateStreams(false);

// Supprimer les flux inutilisés
options->set_RemoveUnusedStreams(false);

// Supprimer les objets inutilisés
options->set_RemoveUnusedObjects(false);

// Optimiser les ressources dans le document
pdfDocument->OptimizeResources(options);

// Enregistrez le document PDF
pdfDocument->Save(u"OutputDirectory\\Remove_Embedded_Fonts_Output.pdf");

Supprimer ou aplatir les annotations à l’aide de C++

Il peut y avoir plusieurs annotations dans les fichiers PDF comme du texte, des formes, etc., qui augmentent la taille du fichier. Ces annotations peuvent être supprimées si elles ne sont plus nécessaires ou aplaties si aucune autre modification n’est nécessaire. Cela réduira la taille du fichier PDF. Voici les étapes pour supprimer ou aplatir les annotations des fichiers PDF.

L’exemple de code suivant montre comment supprimer ou aplatir des annotations dans des fichiers PDF à l’aide de C++.

// Créer une instance de la classe PdfAnnotationEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();

// Charger l'exemple de fichier PDF
annotationEditor->BindPdf(u"SourceDirectory\\PDF\\AnnotationSample.pdf");

// Soit
// Aplatir les annotations
annotationEditor->FlatteningAnnotations();

// Ou
// Supprimer les annotations
//annotationEditor->DeleteAnnotations();

// Enregistrez le document PDF
annotationEditor->Save(u"OutputDirectory\\Remove_Annotations_Output.pdf");

Suppression des champs de formulaire des fichiers PDF à l’aide de C++

Les champs des formulaires sont obligatoires lorsque vous devez collecter des données. Si la collecte de données n’est plus nécessaire, vous pouvez aplatir les champs du formulaire pour réduire la taille du fichier PDF. Voici les étapes pour aplatir les champs de formulaire dans les fichiers PDF.

  • Chargez le fichier PDF à l’aide de la classe Document.
  • Vérifiez l’existence de champs de formulaire.
  • Parcourez les champs du formulaire et aplatissez chaque champ.
  • Enregistrez le fichier PDF en utilisant la méthode Document->Save(System::String outputFileName).

L’exemple de code suivant montre comment aplatir les champs de formulaire dans les fichiers PDF à l’aide de C++.

// Ouvrir le document PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Fillable_PDF_Form.pdf");

if (pdfDocument->get_Form()->get_Fields()->get_Length() > 0)
{
	// Parcourir les champs du formulaire
	for (System::SharedPtr<Field> field : pdfDocument->get_Form()->get_Fields())
	{
		// Aplatir le champ
		field->Flatten();
	}
}

// Enregistrez le document PDF
pdfDocument->Save(u"OutputDirectory\\Flatten_Form_Fields.pdf");

Convertir l’espace colorimétrique RVB en niveaux de gris pour les fichiers PDF à l’aide de C++

Les fichiers PDF contenant des informations textuelles peuvent être bien représentés dans l’espace colorimétrique en niveaux de gris. Ainsi, lorsque la réduction de la taille du fichier est essentielle, ces fichiers PDF peuvent être convertis en niveaux de gris. De plus, supposons que la priorité soit d’archiver les fichiers et d’en réduire la taille autant que possible. Dans ce cas, les fichiers PDF contenant des images peuvent également être convertis en niveaux de gris car l’objectif principal est de rendre les fichiers aussi petits que possible. Pour modifier l’espace colorimétrique des fichiers PDF de RVB à niveaux de gris, suivez les étapes ci-dessous :

L’exemple de code suivant montre comment convertir l’espace colorimétrique d’un fichier PDF de RVB en niveaux de gris à l’aide de C++.

// Ouvrir le document PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 1.pdf");

System::SharedPtr<RgbToDeviceGrayConversionStrategy> strategy = MakeObject<RgbToDeviceGrayConversionStrategy>();

for (int idxPage = 1; idxPage <= pdfDocument->get_Pages()->get_Count(); idxPage++) {
	System::SharedPtr<Page> page = pdfDocument->get_Pages()->idx_get(idxPage);

	// Convertir l'espace colorimétrique de chaque page en niveaux de gris
	strategy->Convert(page);
}

// Enregistrez le document PDF
pdfDocument->Save(u"OutputDirectory\\Grayscale_PDF_Output.pdf");

Obtenez une licence gratuite

Vous pouvez essayer l’API sans limitation d’évaluation en demandant une licence temporaire gratuite.

Conclusion

L’objectif de cet article était d’examiner différentes manières de compresser et d’optimiser les fichiers PDF afin de réduire leur taille. Tout d’abord, nous avons examiné comment optimiser les fichiers PDF pour le Web. Ensuite, nous avons vu comment compresser et redimensionner des images dans des fichiers PDF. De plus, nous avons appris à supprimer les polices et les flux intégrés des fichiers PDF. En plus de cela, nous avons appris à aplatir les annotations et les champs de formulaire, et à convertir l’espace colorimétrique des fichiers PDF en niveaux de gris. Nous avons exploré toutes ces façons de réduire la taille des fichiers PDF sans affecter leur qualité. Aspose.PDF for C++ fournit de nombreuses fonctionnalités supplémentaires pour travailler avec des fichiers PDF. Vous pouvez explorer l’API en détail en visitant la documentation officielle. En cas de questions, n’hésitez pas à nous contacter sur notre forum d’assistance gratuit.

Voir également