Manipuler des Tables dans un PDF existant
Manipuler des tables dans un PDF existant
Aspose.PDF for C++ vous permet de travailler rapidement et efficacement avec des tables, à savoir, les créer de toutes pièces ou les ajouter à des documents PDF existants.
Vous avez également la possibilité d’intégrer la table avec la base de données (DOM) pour créer des tables dynamiques basées sur le contenu de la base de données.
La classe Aspose.PDF.Text.TableAbsorber vous permet de rechercher et d’analyser des tables simples qui existent déjà sur une page de document PDF. L’extrait de code suivant montre les étapes pour mettre à jour le contenu dans une cellule spécifique d’une table.
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/BorderInfo.h>
#include <Aspose.PDF.Cpp/Generator/BorderSide.h>
#include <Aspose.PDF.Cpp/Text/TextFragment.h>
#include <Aspose.PDF.Cpp/Text/TextFragmentCollection.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>
#include <Aspose.PDF.Cpp/Text/TableAbsorber/TableAbsorber.h>
#include <Aspose.PDF.Cpp/Text/TableAbsorber/AbsorbedTable.h>
#include <Aspose.PDF.Cpp/Text/TableAbsorber/AbsorbedRow.h>
#include <Aspose.PDF.Cpp/Text/TableAbsorber/AbsorbedCell.h>
Exemples:
using namespace System;
using namespace Aspose::Pdf;
#include "Table-Manipulate.h"
void ManipulateTables() {
String _dataDir("C:\\Samples\\");
// Charger un fichier PDF existant
auto document = MakeObject<Document>(_dataDir + u"input.pdf");
// Créer un objet TableAbsorber pour trouver des tables
auto absorber = MakeObject<Aspose::Pdf::Text::TableAbsorber>();
// Visiter la première page avec l'absorbeur
absorber->Visit(document->get_Pages()->idx_get(1));
// Accéder à la première table sur la page, à leur première cellule et aux fragments de texte à l'intérieur
auto fragment = absorber->get_TableList()->idx_get(0)->get_RowList()->idx_get(0)->get_CellList()->idx_get(0)->get_TextFragments()->idx_get(1);
// Modifier le texte du premier fragment de texte dans la cellule
fragment->set_Text(u"salut monde");
document->Save(_dataDir + u"ManipulateTable_out.pdf");
}
Remplacer une ancienne table par une nouvelle dans un document PDF
Dans le cas où vous devez trouver une table particulière et la remplacer par celle souhaitée, vous pouvez utiliser la méthode Replace() de la classe TableAbsorber pour le faire.
Le exemple suivant démontre la fonctionnalité pour remplacer la table dans le document PDF :
void ReplaceOldTable() {
String _dataDir("C:\\Samples\\");
// Charger le fichier PDF existant
auto document = MakeObject<Document>(_dataDir + u"Table_input2.pdf");
// Créer un objet TableAbsorber pour trouver les tables
auto absorber = MakeObject<Aspose::Pdf::Text::TableAbsorber>();
// Visiter la première page avec l'absorbeur
absorber->Visit(document->get_Pages()->idx_get(1));
// Obtenir la première table sur la page
auto table = absorber->get_TableList()->idx_get(0);
// Créer une nouvelle table
auto newTable = MakeObject<Table>();
newTable->set_ColumnWidths(u"100 100 100");
newTable->set_DefaultCellBorder (MakeObject<BorderInfo>(BorderSide::All, 1.0F));
auto row = newTable->get_Rows()->Add();
row->get_Cells()->Add(u"Col 1");
row->get_Cells()->Add(u"Col 2");
row->get_Cells()->Add(u"Col 3");
// Remplacer la table par une nouvelle
absorber->Replace(document->get_Pages()->idx_get(1), table, newTable);
// Enregistrer le document
document->Save(_dataDir + u"TableReplaced_out.pdf");
}