Créer ou Ajouter un Tableau dans un PDF

Création de Tableau en utilisant C++

Les tableaux sont importants lorsque l’on travaille avec des documents PDF. Ils offrent d’excellentes fonctionnalités pour afficher des informations de manière systématique.

Les tableaux dans un document PDF organisent les données en lignes et colonnes de manière systématique. L’API Aspose.PDF pour C++ vous permet d’ajouter des tableaux à un document PDF, ainsi que d’ajouter des lignes et des colonnes à celui-ci dans vos applications C++. La classe Table est utilisée pour ajouter un tableau au document. Les étapes suivantes peuvent être suivies pour ajouter un tableau à un document PDF en utilisant C++.

Ajout de Tableau dans un Document PDF Existant

Pour ajouter un tableau à un fichier PDF existant avec Aspose.PDF pour C++, suivez les étapes suivantes :

  1. Chargez le fichier source.
  2. Initialisez un tableau et définissez ses colonnes et ses lignes.
  3. Définissez les paramètres du tableau (nous avons défini les bordures).
  4. Remplissez le tableau.
  5. Ajoutez le tableau à une page.
  6. Enregistrez le fichier.

Les extraits de code suivants montrent comment ajouter du texte dans un fichier PDF existant.

En-têtes

#include <system/date_time.h>
#include <system/io/file.h>
#include <system/console.h>
#include <data/data_table.h>
#include <data/data_column_collection.h>
#include <system/type_info.h>

#include <Aspose.PDF.Cpp/Document.h>
#include <Aspose.PDF.Cpp/Page.h>
#include <Aspose.PDF.Cpp/PageCollection.h>
#include <Aspose.PDF.Cpp/Generator/Paragraphs.h>
#include <Aspose.PDF.Cpp/Generator/BorderSide.h>
#include <Aspose.PDF.Cpp/Generator/BorderInfo.h>
#include <Aspose.PDF.Cpp/Generator/PageInfo.h>
#include <Aspose.PDF.Cpp/Generator/MarginInfo.h>
#include <Aspose.PDF.Cpp/Generator/GraphInfo.h>
#include <Aspose.PDF.Cpp/Generator/BorderCornerStyle.h>
#include <Aspose.PDF.Cpp/Generator/ColumnAdjustment.h>
#include <Aspose.PDF.Cpp/Generator/ImageFileType.h>
#include <Aspose.PDF.Cpp/Generator/Image.h>
#include <Aspose.PDF.Cpp/Generator/HtmlFragment.h>

#include <Aspose.PDF.Cpp/Text/TextFragment.h>

#include <Aspose.PDF.Cpp/Color.h>

#include <Aspose.PDF.Cpp/Table/Table.h>
#include <Aspose.PDF.Cpp/Table/Row.h>
#include <Aspose.PDF.Cpp/Table/Rows.h>
#include <Aspose.PDF.Cpp/Table/Cell.h>
#include <Aspose.PDF.Cpp/Table/Cells.h>

Échantillon

using namespace System;
using namespace Aspose::Pdf;

void AddingTableInExistingPDFDocument() {
    
    String _dataDir("C:\\Samples\\");

    // Charger le document PDF source
    auto document = MakeObject<Document>(_dataDir + u"AddTable.pdf");
    
    // Initialise une nouvelle instance de la Table
    auto table = MakeObject<Table>();
    
    // Définir la couleur de la bordure de la table comme LightGray
    table->set_Border(MakeObject<Aspose::Pdf::BorderInfo>(
        Aspose::Pdf::BorderSide::All, .5f, 
        Aspose::Pdf::Color::get_LightGray()));
    // Définir la bordure pour les cellules de la table
    table->set_DefaultCellBorder (MakeObject<Aspose::Pdf::BorderInfo>(
        Aspose::Pdf::BorderSide::All, .5f, 
        Aspose::Pdf::Color::get_LightGray()));

    // Créer une boucle pour ajouter 10 lignes
    for (int row_count = 1; row_count < 10; row_count++)
    {
        // Ajouter une ligne à la table
        auto row = table->get_Rows()->Add();
        // Ajouter des cellules de table
        row->get_Cells()->Add(String::Format(u"Colonne ({0}, 1)", row_count));
        row->get_Cells()->Add(String::Format(u"Colonne ({0}, 2)", row_count));
        row->get_Cells()->Add(String::Format(u"Colonne ({0}, 3)", row_count));
    }

    // Ajouter l'objet table à la première page du document d'entrée
    document->get_Pages()->idx_get(1)->get_Paragraphs()->Add(table);
    
    // Enregistrer le document mis à jour contenant l'objet table
    document->Save(_dataDir + u"document_with_table_out.pdf");
}

ColSpan et RowSpan dans les Tables

Aspose.PDF pour C++ présente une propriété ColSpan pour fusionner les colonnes dans un tableau et une propriété RowSpan pour fusionner les lignes.

Nous utilisons la propriété ColSpan ou RowSpan sur l’objet Cell qui crée la cellule du tableau. Après avoir appliqué les propriétés requises, la cellule créée peut être ajoutée au tableau.

void AddTable_RowColSpan()
{
    String _dataDir("C:\\Samples\\");

    // Charger le document PDF source
    auto document = MakeObject<Document>();
    document->get_Pages()->Add();

    // Initialise une nouvelle instance du tableau
    auto table = MakeObject<Table>();
    // Définir la couleur de la bordure du tableau comme GrisClair
    table->set_Border(MakeObject<Aspose::Pdf::BorderInfo>(
        Aspose::Pdf::BorderSide::All, .5f, 
        Color::get_Black()));
    // Définir la bordure pour les cellules du tableau
    table->set_DefaultCellBorder(
        MakeObject<Aspose::Pdf::BorderInfo>(
            Aspose::Pdf::BorderSide::All, .5f, 
            Color::get_Black()));
    

    // Ajouter la 1ère ligne au tableau
    auto row1 = table->get_Rows()->Add();
    for (int cellCount = 1; cellCount < 5; cellCount++)
    {
        // Ajouter des cellules au tableau
        row1->get_Cells()->Add(String::Format(u"Test 1 {0}", cellCount));
    }

    // Ajouter la 2ème ligne au tableau
    auto row2 = table->get_Rows()->Add();
    row2->get_Cells()->Add(u"Test 2 1");
    auto cell = row2->get_Cells()->Add(u"Test 2 2");
    cell->set_ColSpan(2);
    row2->get_Cells()->Add(u"Test 2 4");

    // Ajouter la 3ème ligne au tableau
    auto row3 = table->get_Rows()->Add();
    row3->get_Cells()->Add(u"Test 3 1");
    row3->get_Cells()->Add(u"Test 3 2");
    row3->get_Cells()->Add(u"Test 3 3");
    row3->get_Cells()->Add(u"Test 3 4");

    // Ajouter la 4ème ligne au tableau
    auto row4 = table->get_Rows()->Add();
    row4->get_Cells()->Add(u"Test 4 1");
    cell = row4->get_Cells()->Add(u"Test 4 2");
    cell->set_RowSpan(2);
    row4->get_Cells()->Add(u"Test 4 3");
    row4->get_Cells()->Add(u"Test 4 4");

    // Ajouter la 5ème ligne au tableau
    auto row5 = table->get_Rows()->Add();
    row5->get_Cells()->Add(u"Test 5 1");
    row5->get_Cells()->Add(u"Test 5 3");
    row5->get_Cells()->Add(u"Test 5 4");

    // Ajouter l'objet tableau à la première page du document d'entrée
    document->get_Pages()->idx_get(1)->get_Paragraphs()->Add(table);

    // Enregistrer le document mis à jour contenant l'objet tableau
    document->Save(_dataDir + u"document_with_table_out.pdf");
}

Le résultat de l’exécution du code ci-dessous est le tableau illustré sur l’image suivante :

Démonstration de ColSpan et RowSpan

Travailler avec les Bordures, Marges et Espacement

Notez qu’il prend également en charge la fonction de définition des bordures, marges et espacement des cellules pour les tableaux. Comprenons d’abord le concept de bordures, marges et espacement, qui sont présentés dans le schéma ci-dessous :

Bordures, marges et espacement

Examinez le dessin en détail. Il montre que les bordures du tableau, des lignes et des cellules se chevauchent. En utilisant Aspose.PDF pour C++, le tableau peut avoir des marges et les cellules peuvent être indentées. Pour définir les marges des cellules, nous devons définir l’espacement des cellules.

Bordures

Pour définir les bordures des objets Table, Row et Cell, utilisez les propriétés Table.Border, Row.Border et Cell.Border. Les bordures des cellules peuvent également être définies en utilisant la propriété DefaultCellBorder de la classe Table ou Row. Toutes les propriétés liées aux bordures discutées ci-dessus sont attribuées à une instance de la classe Row, qui est créée en appelant son constructeur. La classe Row a de nombreuses surcharges qui prennent presque tous les paramètres nécessaires pour personnaliser la bordure.

Marges ou Rembourrage

Le rembourrage des cellules peut être géré en utilisant la propriété DefaultCellPadding de la classe Table. Toutes les propriétés liées au rembourrage sont attribuées à une instance de la classe MarginInfo qui prend des informations sur les paramètres Left, Right, Top et Bottom pour créer des marges personnalisées.

Marge et Bordure dans le Tableau PDF

void AddTable_MergingPadding() {

    String _dataDir("C:\\Samples\\");

    // Instancier l'objet Document en appelant son constructeur vide
    auto document = MakeObject<Document>();
    auto page = document->get_Pages()->Add();

    // Instancier un objet table
    auto tab1 = MakeObject<Table>();
    // Ajouter la table dans la collection de paragraphes de la section souhaitée
    page->get_Paragraphs()->Add(tab1);
    // Définir les largeurs de colonne de la table
    tab1->set_ColumnWidths (u"50 50 50");
    // Définir la bordure par défaut des cellules à l'aide de l'objet BorderInfo
    tab1->set_DefaultCellBorder (
        MakeObject<Aspose::Pdf::BorderInfo>(
            Aspose::Pdf::BorderSide::All, 0.1F));
    // Définir la bordure de la table à l'aide d'un autre objet BorderInfo personnalisé
    tab1->set_Border (
        MakeObject<Aspose::Pdf::BorderInfo>(
            Aspose::Pdf::BorderSide::All, 1.0F));

    // Créer un objet MarginInfo et définir ses marges gauche, bas, droite et haut
    auto margin = MakeObject<MarginInfo>();
    margin->set_Top (5.0f);
    margin->set_Left (5.0f);
    margin->set_Right (5.0f);
    margin->set_Bottom (5.0f);

    // Définir le rembourrage par défaut des cellules sur l'objet MarginInfo
    tab1->set_DefaultCellPadding (margin);
    // Créer des lignes dans la table puis des cellules dans les lignes
    auto row1 = tab1->get_Rows()->Add();
    row1->get_Cells()->Add(u"col1");
    row1->get_Cells()->Add(u"col2");
    row1->get_Cells()->Add();

    auto mytext = MakeObject<Aspose::Pdf::Text::TextFragment>(u"col3 with large text string");
        
    row1->get_Cells()->idx_get(2)->get_Paragraphs()->Add(mytext);
    row1->get_Cells()->idx_get(2)->set_IsWordWrapped(false);
    

    auto row2 = tab1->get_Rows()->Add();
    row2->get_Cells()->Add(u"item1");
    row2->get_Cells()->Add(u"item2");
    row2->get_Cells()->Add(u"item3");
    
    // Sauvegarder le Pdf
    document->Save(_dataDir + u"MarginsOrPadding_out.pdf");
}

Pour créer une table avec des coins arrondis, utilisez la classe BorderInfo avec la valeur RoundedBorderRadius et définissez le style des coins de la table sur arrondi.

void AddTable_RoundedBorderRadius()
{
    // Le chemin vers le répertoire des documents.
    String _dataDir("C:\\Samples\\");

    auto tab1 = MakeObject<Aspose::Pdf::Table>();

    auto graph = MakeObject<GraphInfo>();
    graph->set_Color(Color::get_Red());
    // Créer un objet BorderInfo vide
    auto bInfo = MakeObject<BorderInfo>(BorderSide::All, graph);

    // Définir la bordure comme une bordure arrondie où le rayon est de 15
    bInfo->set_RoundedBorderRadius(15);
    // Définir le style des coins de la table comme arrondi.
    tab1->set_CornerStyle (Aspose::Pdf::BorderCornerStyle::Round);
    // Définir les informations de bordure de la table
    tab1->set_Border(bInfo);
}

Propriété AutoFitToWindow dans l’énumération ColumnAdjustmentType

void AddTable_AutoFitToWindow() {
    
    // Le chemin d'accès au répertoire des documents.
    String _dataDir("C:\\Samples\\");

    // Instancier l'objet Pdf en appelant son constructeur vide
    auto document = MakeObject<Document>();

    // Créer la section dans l'objet Pdf
    auto sec1 = document->get_Pages()->Add();

    // Instancier un objet table
    auto tab1 = MakeObject<Aspose::Pdf::Table>();
    // Ajouter la table dans la collection de paragraphes de la section souhaitée
    sec1->get_Paragraphs()->Add(tab1);

    // Définir les largeurs de colonne de la table
    tab1->set_ColumnWidths (u"50 50 50");
    tab1->set_ColumnAdjustment (ColumnAdjustment::AutoFitToWindow);

    // Définir la bordure de cellule par défaut en utilisant l'objet BorderInfo
    tab1->set_DefaultCellBorder(MakeObject<BorderInfo>(Aspose::Pdf::BorderSide::All, 0.1F));

    // Définir la bordure de la table en utilisant un autre objet BorderInfo personnalisé
    tab1->set_Border (MakeObject<BorderInfo>(Aspose::Pdf::BorderSide::All, 1.0F));

    // Créer un objet MarginInfo et définir ses marges gauche, bas, droite et haut
    auto margin = MakeObject<MarginInfo>();
    margin->set_Top(5.0f);
    margin->set_Left(5.0f);
    margin->set_Right(5.0f);
    margin->set_Bottom(5.0f);

    // Définir le remplissage de cellule par défaut sur l'objet MarginInfo
    tab1->set_DefaultCellPadding(margin);

    // Créer des lignes dans la table puis des cellules dans les lignes
    auto row1 = tab1->get_Rows()->Add();
    row1->get_Cells()->Add(u"col1");
    row1->get_Cells()->Add(u"col2");
    row1->get_Cells()->Add(u"col3");

    auto row2 = tab1->get_Rows()->Add();
    row2->get_Cells()->Add(u"item1");
    row2->get_Cells()->Add(u"item2");
    row2->get_Cells()->Add(u"item3");
    
    // Enregistrer le document mis à jour contenant l'objet table
    document->Save(_dataDir + u"AutoFitToWindow_out.pdf");
}

Obtenir la largeur de la table

Il y a des tâches dans lesquelles vous devez obtenir dynamiquement la largeur de la table. La classe Aspose.PDF.Table dispose d’une méthode [GetWidth] à cet effet (https://reference.aspose.com/pdf/cpp/class/aspose.pdf.table#a3361cc8d4af87eec2e3da616c474ac1c). Par exemple, vous n’avez pas explicitement défini la largeur des colonnes de la table, et vous n’avez pas défini [ColumnAdjustment] (https://reference.aspose.com/pdf/cpp/namespace/aspose.pdf#afc01382935026dd569c96d77d09dc3a4) à AutoFitToContent. Dans ce cas, vous pouvez obtenir la largeur de la table suivante.

void GetTableWidth() {
    // Créer un nouveau document
    auto document = MakeObject<Document>();
    
    // Ajouter une page dans le document
    auto page = document->get_Pages()->Add();

    // Initialiser une nouvelle table
    auto table = MakeObject<Table>();
    table->set_ColumnAdjustment(ColumnAdjustment::AutoFitToContent);
    
    // Ajouter une ligne dans la table
    auto row = table->get_Rows()->Add();

    // Ajouter une cellule dans la table
    auto cell = row->get_Cells()->Add(u"Texte de la cellule 1");
    cell = row->get_Cells()->Add(u"Texte de la cellule 2");
    // Obtenir la largeur de la table
    Console::WriteLine(table->GetWidth());
}

Ajouter une image SVG à une cellule de tableau

Aspose.PDF pour C++ vous permet d’ajouter des cellules de tableau à un fichier PDF. Lorsque vous créez un tableau, vous pouvez ajouter du texte ou des images aux cellules. De plus, l’API offre également une fonction pour convertir des fichiers SVG en PDF. En utilisant une combinaison de ces fonctions, il est possible de charger une image SVG et de l’ajouter à une cellule de tableau.

L’extrait de code suivant montre les étapes pour instancier un tableau et ajouter une image SVG à une cellule de tableau.

void InsertSVGObject() 
{
    String _dataDir("C:\\Samples\\");

    // Instancier l'objet Document
    auto document = MakeObject<Document>();
    // Créer une instance d'image
    auto img = MakeObject<Aspose::Pdf::Image>();

    // Définir le type d'image comme SVG
    img->set_FileType(Aspose::Pdf::ImageFileType::Svg);
    // Chemin pour le fichier source
    img->set_File (_dataDir + u"SVGToPDF.svg");
    // Définir la largeur pour l'instance d'image
    img->set_FixWidth (50);
    // Définir la hauteur pour l'instance d'image
    img->set_FixHeight(50);
    // Créer une instance de tableau
    auto table = MakeObject<Aspose::Pdf::Table>();
    // Définir la largeur pour les cellules du tableau
    table->set_ColumnWidths (u"100 100");
    // Créer un objet de ligne et l'ajouter à l'instance de tableau
    auto row = table->get_Rows()->Add();
    // Créer un objet de cellule et l'ajouter à l'instance de ligne
    auto cell = row->get_Cells()->Add();
    // Ajouter un fragment de texte à la collection de paragraphes de l'objet cellule
    cell->get_Paragraphs()->Add(MakeObject<Aspose::Pdf::Text::TextFragment>(u"First cell"));
    // Ajouter une autre cellule à l'objet ligne
    cell = row->get_Cells()->Add();
    // Ajouter une image SVG à la collection de paragraphes de l'instance de cellule récemment ajoutée
    cell->get_Paragraphs()->Add(img);
    // Créer un objet page et l'ajouter à la collection de pages de l'instance de document
    auto page = document->get_Pages()->Add();
    // Ajouter le tableau à la collection de paragraphes de l'objet page
    page->get_Paragraphs()->Add(table);    
    // Enregistrer le fichier PDF
    document->Save(_dataDir + u"AddSVGObject_out.pdf");
}

Utilisation des balises HTML à l’intérieur du tableau

Pour certaines tâches, vous devrez importer le contenu de la base de données avec certaines balises HTML, puis importer le contenu dans un objet Table. Lors de l’importation de contenu, les balises HTML doivent être affichées à l’intérieur du document PDF.

Dans l’extrait de code suivant, vous pouvez définir la couleur de la bordure du tableau, définir la bordure pour les cellules du tableau. Ensuite, vous créerez une boucle pour ajouter 10 lignes. Ajoutez l’objet table à la première page du document d’entrée et enregistrez le document mis à jour.

void AddHTMLFragmentToTableCell() {
    String _dataDir("C:\\Samples\\");

    auto document = MakeObject<Document>(_dataDir + u"input.pdf");    
    // Initialise une nouvelle instance de la Table
    auto table = MakeObject<Table>();
    // Définir la couleur de la bordure du tableau comme LightGray
    table->set_Border(new BorderInfo(BorderSide::All, .5f, Color::get_LightGray()));
    // définir la bordure pour les cellules du tableau
    table->set_DefaultCellBorder(new BorderInfo(BorderSide::All, .5f, Color::get_LightGray()));
    // créer une boucle pour ajouter 10 lignes       
    for (int row_count = 1; row_count < 10; row_count++) {
        SmartPtr<Cell> cell;
        // ajouter une ligne au tableau
        auto row = table->get_Rows()->Add();
        // ajouter des cellules au tableau
        cell = row->get_Cells()->Add();
        cell->get_Paragraphs()->Add(new HtmlFragment(String::Format(u"Colonne <strong>({0}, 1)</strong>", row_count)));

        cell = row->get_Cells()->Add();
        cell->get_Paragraphs()->Add(new HtmlFragment(String::Format(u"Colonne <span style='color:red'>({0}, 2)</span>",row_count)));

        cell = row->get_Cells()->Add();
        cell->get_Paragraphs()->Add(new HtmlFragment(String::Format(u"Colonne <span style='text-decoration: underline'>([0}, 3)</span>", row_count)));
    }
    // Ajouter l'objet table à la première page du document d'entrée
    document->get_Pages()->idx_get(1)->get_Paragraphs()->Add(table);
    // Enregistrer le document mis à jour contenant l'objet table
    document->Save(_dataDir + u"AddHTMLObject_out.pdf");
}

Insérer un saut de page entre les lignes du tableau

En général, lors de la création d’un tableau dans un PDF, le tableau se prolonge sur les pages suivantes lorsqu’il atteint la marge inférieure du tableau. Mais nous pouvons avoir besoin d’insérer un saut de page lorsque un certain nombre de lignes sont ajoutées au tableau. Le code suivant montre les étapes pour insérer un saut de page lors de l’ajout de 10 lignes à un tableau.

Le code suivant montre les étapes pour insérer un saut de page lorsque 10 lignes sont ajoutées au tableau.

void InsertPageBreak() {
    String _dataDir("C:\\Samples\\");

    // Instancier l'objet Document
    auto document = MakeObject<Document>();
    
    // Ajouter une page à la collection de pages du fichier PDF
    auto page = document->get_Pages()->Add();

    // Créer une instance de tableau
    auto tab = MakeObject<Table>();

    // Définir le style de bordure pour le tableau
    tab->set_Border(MakeObject<BorderInfo>(BorderSide::All, Color::get_Red()));
    // Définir le style de bordure par défaut pour le tableau avec la couleur de bordure en rouge
    tab->set_DefaultCellBorder(MakeObject<BorderInfo>(BorderSide::All, Color::get_Red()));
    // Spécifier la largeur des colonnes du tableau
    tab->set_ColumnWidths(u"100 100");

    // Créer une boucle pour ajouter 200 lignes au tableau
    for (int counter = 0; counter <= 200; counter++) {
        auto row = MakeObject<Row>();
        tab->get_Rows()->Add(row);
        auto cell1 = MakeObject<Cell>();
        cell1->get_Paragraphs()->Add(MakeObject<Aspose::Pdf::Text::TextFragment>(String::Format(u"Cell {0}, 0", counter)));
        row->get_Cells()->Add(cell1);

        auto cell2 = new Cell();
        cell2->get_Paragraphs()->Add(MakeObject<Aspose::Pdf::Text::TextFragment>(String::Format(u"Cell {0}, 1", counter)));
        row->get_Cells()->Add(cell2);
        // Lorsque 10 lignes sont ajoutées, rendre la nouvelle ligne dans une nouvelle page
        if (counter % 10 == 0 && counter != 0)
            row->set_IsInNewPage(true);
    }
    // Ajouter le tableau à la collection de paragraphes du fichier PDF
    page->get_Paragraphs()->Add(tab);

    // Enregistrer le document PDF
    document->Save(_dataDir + u"InsertPageBreak_out.pdf");
}

Rendre un Tableau sur une Nouvelle Page

Par défaut, les paragraphes sont ajoutés à la collection Paragraphs d’un objet Page. Cependant, il est possible de rendre un tableau sur une nouvelle page au lieu de le faire directement après l’objet de niveau paragraphe précédemment ajouté sur la page.

Exemple : Comment Rendre un Tableau sur une Nouvelle Page en Utilisant C++

Pour rendre un tableau sur une nouvelle page, utilisez la propriété IsInNewPage dans la classe BaseParagraph. Le code suivant montre comment faire.

void RenderTableOnNewPage()
{
    auto document = MakeObject<Document>();
    auto pageInfo = document->get_PageInfo();
    auto marginInfo = pageInfo->get_Margin();

    marginInfo->set_Left (37);
    marginInfo->set_Right (37);
    marginInfo->set_Top (37);
    marginInfo->set_Bottom (37);

    pageInfo->set_IsLandscape(true);

    auto table = MakeObject<Aspose::Pdf::Table>();
    table->set_ColumnWidths(u"50 100");
    // Page ajoutée.
    auto curPage = document->get_Pages()->Add();
    for (int i = 1; i <= 120; i++)
    {
        auto row = table->get_Rows()->Add();
        row->set_FixedRowHeight(15);
        auto cell1 = row->get_Cells()->Add();
        cell1->get_Paragraphs()->Add(MakeObject<Aspose::Pdf::Text::TextFragment>(u"Content 1"));
        auto cell2 = row->get_Cells()->Add();
        cell2->get_Paragraphs()->Add(MakeObject<Aspose::Pdf::Text::TextFragment>(u"HHHHH"));
    }
    auto paragraphs = curPage->get_Paragraphs();
    paragraphs->Add(table);

    //-------------------------------------

    auto document = MakeObject<Document>();
    auto table1 = MakeObject<Aspose::Pdf::Table>();
    table1->set_ColumnWidths(u"100 100");

    String _dataDir("C:\\Samples\\");

    for (int i = 1; i <= 10; i++)
    {
        auto row = table1->get_Rows()->Add();
        auto cell1 = row->get_Cells()->Add();
        cell1->get_Paragraphs()->Add(MakeObject<Aspose::Pdf::Text::TextFragment>(u"LAAAAAAA"));
        auto cell2 = row->get_Cells()->Add();
        cell2->get_Paragraphs()->Add(MakeObject<Aspose::Pdf::Text::TextFragment>(u"LAAGGGGGG"));
    }
    
    table1->set_IsInNewPage (true);
    // Je veux garder le tableau 1 à la page suivante s'il vous plaît...
    paragraphs->Add(table1);
    
    document->Save(_dataDir + u"IsNewPageProperty_Test_out.pdf");
}