Convertir Excel en PDF avec C++

Conversion du classeur Excel en PDF

Les fichiers PDF sont largement utilisés pour échanger des documents entre organisations, secteurs gouvernementaux, et particuliers. C’est un format de document standard, et les développeurs de logiciels sont souvent sollicités pour trouver un moyen de convertir les fichiers Microsoft Excel en documents PDF.

Aspose.Cells prend en charge la conversion de fichiers Excel en PDF et maintient une haute fidélité visuelle dans la conversion.

Conversion directe

Aspose.Cells for C++ prend en charge la conversion de feuilles de calcul en PDF indépendamment des autres logiciels. Il suffit d’enregistrer un fichier Excel en PDF en utilisant la méthode Save de la classe Workbook. La méthode Save fournit le membre d’énumération SaveFormat.Pdf qui convertit les fichiers Excel natifs en format PDF.

Suivez les étapes ci-dessous pour convertir directement les feuilles de calcul Excel au format PDF :

  1. Instancier un objet de la classe Workbook en appelant son constructeur vide.
  2. Vous pouvez ouvrir/charger un fichier de modèle existant ou sauter cette étape si vous créez le classeur à partir de zéro.
  3. Effectuez n’importe quel travail (données d’entrée, mise en forme, application de formules, insertion d’images ou autres objets de dessin, etc.) sur la feuille de calcul en utilisant les API d’Aspose.Cells.
  4. Une fois le code de la feuille de calcul terminé, appelez la méthode Save de la classe Workbook pour enregistrer la feuille de calcul.

Le format de fichier doit être PDF, il faut donc sélectionner Pdf (une valeur prédéfinie) dans l’énumération SaveFormat pour générer le document PDF final.

#include <iostream>
#include "Aspose.Cells.h"

using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    // Path of input Excel file
    U16String inputFilePath = srcDir + u"Book1.xls";

    // Path of output PDF file
    U16String outputFilePath = outDir + u"output.pdf";

    // Create workbook
    Workbook workbook(inputFilePath);

    // Save the document in PDF format
    workbook.Save(outputFilePath, SaveFormat::Pdf);

    std::cout << "Document saved successfully in PDF format!" << std::endl;

    Aspose::Cells::Cleanup();
}

Conversion avancée

Vous pouvez également choisir d’utiliser la classe PdfSaveOptions pour définir différents attributs pour la conversion. La modification des propriétés de la classe PdfSaveOptions vous donne le contrôle sur les paramètres d’impression, la police, la sécurité et la compression pour le PDF de sortie.

La propriété la plus importante est GetCompliance(), qui vous permet de définir le niveau de conformité aux normes PDF. Actuellement, vous pouvez enregistrer au format PDF 1.4, PDF 1.5, PDF 1.6, PDF 1.7, PDF/A-1a, PDF/A-1b, PDF/A-2a, PDF/A-2b, PDF/A-2u, PDF/A-3a, PDF/A-2ab et PDF/A-3u. Notez qu’avec le format PDF/A, la taille du fichier de sortie est plus grande que celle d’un PDF classique.

Enregistrement du classeur en fichiers conformes PDF/A

Le morceau de code ci-dessous montre comment utiliser la classe PdfSaveOptions pour enregistrer des fichiers Excel au format PDF/A compatible.

#include <iostream>
#include "Aspose.Cells.h"

using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    // Instantiate new workbook
    Workbook workbook;

    // Insert a value into the A1 cell in the first worksheet
    workbook.GetWorksheets().Get(0).GetCells().Get(0, 0).PutValue(U16String(u"Testing PDF/A"));

    // Define PdfSaveOptions
    PdfSaveOptions pdfSaveOptions;

    // Set the compliance type
    pdfSaveOptions.SetCompliance(PdfCompliance::PdfA1b);

    // Save the file
    workbook.Save(outDir + u"output.pdf", pdfSaveOptions);

    std::cout << "PDF file created successfully with PDF/A-1b compliance!" << std::endl;

    Aspose::Cells::Cleanup();
}

Définir l’heure de création du PDF

Avec la classe PdfSaveOptions, vous pouvez obtenir ou définir l’heure de création du PDF. Le code suivant illustre l’utilisation de la propriété PdfSaveOptions.GetCreatedTime() pour définir l’heure de création du fichier PDF.

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Path of input excel file
    U16String inputPath = srcDir + u"Book1.xlsx";

    // Load excel file containing charts
    Workbook workbook(inputPath);

    // Create an instance of PdfSaveOptions
    PdfSaveOptions options;
	options.SetCreatedTime(Date{ 2025,01,01 });

    // Save the workbook to PDF format while passing the object of PdfSaveOptions
    workbook.Save(srcDir + u"output.pdf", options);

    std::cout << "Workbook saved to PDF successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}

Définir l’option ContentCopyForAccessibility

Avec la classe PdfSaveOptions, vous pouvez obtenir ou définir l’option GetAccessibilityExtractContent() du PDF pour contrôler l’accès au contenu dans le PDF converti.

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    // Path of input excel file
    U16String inputPath = srcDir + u"BookWithSomeData.xlsx";

    // Load excel file containing some data
    Workbook workbook(inputPath);

    // Create an instance of PdfSaveOptions
    PdfSaveOptions pdfSaveOpt;

    // Create an instance of PdfSecurityOptions
    PdfSecurityOptions securityOptions;

    // Set AccessibilityExtractContent to false
    securityOptions.SetAccessibilityExtractContent(false);

    // Set the security option in the PdfSaveOptions
    pdfSaveOpt.SetSecurityOptions(securityOptions);

    // Save the workbook to PDF format while passing the object of PdfSaveOptions
    workbook.Save(outDir + u"outFile.pdf", pdfSaveOpt);

    std::cout << "Workbook saved to PDF format successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}

Exporter les propriétés personnalisées vers un PDF

Avec la classe PdfSaveOptions, vous pouvez exporter les propriétés personnalisées du classeur source vers le PDF. L’énumérateur PdfCustomPropertiesExport est fourni pour spécifier la manière dont les propriétés sont exportées. Ces propriétés peuvent être visualisées dans Adobe Acrobat Reader en cliquant sur Fichier puis Propriétés, comme illustré ci-dessous. Le fichier modèle “sourceWithCustProps.xlsx” peut être téléchargé ici pour tester, et le fichier PDF de sortie “outSourceWithCustProps” est disponible ici pour analyse.

todo:image_alt_text

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Rendering;

int main()
{
    Aspose::Cells::Startup();

    // Load excel file containing custom properties
    U16String inputFilePath(u"sourceWithCustProps.xlsx");
    Workbook workbook(inputFilePath);

    // Create an instance of PdfSaveOptions
    PdfSaveOptions pdfSaveOptions;

    // Set CustomPropertiesExport property to PdfCustomPropertiesExport::Standard
    pdfSaveOptions.SetCustomPropertiesExport(PdfCustomPropertiesExport::Standard);

    // Save the workbook to PDF format while passing the object of PdfSaveOptions
    U16String outputFilePath(u"outSourceWithCustProps.pdf");
    workbook.Save(outputFilePath, pdfSaveOptions);

    Aspose::Cells::Cleanup();
}

Attributs de conversion

Nous travaillons à améliorer les fonctionnalités de conversion à chaque nouvelle version. La conversion Excel en PDF d’Aspose.Cells comporte encore quelques limitations. MapChart n’est pas supporté lors de la conversion en PDF. De plus, certains objets de dessin ne sont pas bien pris en charge.

Le tableau suivant liste toutes les fonctionnalités entièrement ou partiellement supportées lors de l’exportation en PDF avec Aspose.Cells. Ce tableau n’est pas définitif et ne couvre pas toutes les attributs du tableur, mais il identifie celles qui ne sont pas prises en charge ou partiellement supportées pour la conversion en PDF.

Élément du document Attribut Pris en charge Notes
Alignement Oui
Paramètres de fond Oui
Bordure Couleur Oui
Bordure Style de ligne Oui
Bordure Largeur de ligne Oui
Données de la cellule Oui
Commentaires Oui
Mise en forme conditionnelle Oui
Propriétés du document Oui
Objets de dessin Partiellement Les effets d’ombre et 3D pour les objets de dessin ne sont pas bien pris en charge ; WordArt et SmartArt sont partiellement supportés.
Police Taille Oui
Police Couleur Oui
Police Style Oui
Police Soulignement Oui
Police Effets Oui
Images Oui
Lien hypertexte Oui
Graphiques Partiellement MapChart n’est pas supporté.
Cellules fusionnées Oui
Saut de page Oui
Mise en page En-tête/Pied de page Oui
Mise en page Marges Oui
Mise en page Orientation de la page Oui
Mise en page Taille de la page Oui
Mise en page Zone d’impression Oui
Mise en page Titres à imprimer Oui
Mise en page Escalabilité Oui
Hauteur des lignes/largeur des colonnes Oui
Langue RTL (de droite à gauche) Oui

Sujets avancés