IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Mise en forme tableau dans PDF avec itextsharp


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Points : 98
    Points
    98
    Par défaut Mise en forme tableau dans PDF avec itextsharp
    Bonjour à tous,

    J'utilise itextsharp pour transférer des tableaux vers un document PDF.
    On trouve beaucoup de sources en C mais pas trop en vb.net

    Comme mon application est en vb.net, j'ai décidé de rester avec ce même langage
    Deux choix s'offraient à moi : en accédant directement à la base access ou en utilisant les datagridview.

    J'ai opté pour le deuxième choix

    Via le code, j'ai réussi à exporter un datagridview en intégrant automatiquement le nombre de colonnes, les largeurs des colonnes d'origine
    Le tableau obtenu correspond exactement à ce que je voulais

    Seulement, voilà je bute sur un truc.
    Je crée ma table ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim table As New PdfPTable(Form1.Table1DataGridView.Columns.Count)
    Après avoir fait ma soupe je remplis les cellules avec la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.AddCell(........)
    Puis je l'intègre à mon document
    Seulement le texte apparait à gauche et la hauteur des lignes est trop serrée.
    Afin de donner un peu d'air à cette table, je cherche un moyen de définir pour toute ma table une hauteur pour chaque ligne ajouté et que le contenu de chaque cellule soit au milieu (centré verticalement et horizontalement).

    J'ai fouiné à droite et à gauche et je n'ai pas réussi à mettre la main sur les paramètres adéquates.

    Merci pour votre future aide

  2. #2
    Membre actif Avatar de DeWaRs
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 291
    Points : 269
    Points
    269
    Par défaut
    Hello,

    Il faut que tu créé une cellule que tu personnalises avec la propriété "style" comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim NavCell As TableCell = New TableCell
    NavCell.Font.Bold = True
    NavCell.ForeColor = Drawing.Color.Black
    NavCell.Wrap = False
    NavCell.Style.Add("padding-left", "5px")
    et que tu ajoute cette cellule à ta ligne, puis ta ligne a ta table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    table.row(0).cells.add(NavCell)
    Il faut juste que tu trouves les propriétées CSS qui correspondent à ta demande. Si je ne suis pas assez claire, n'hésite pas à me le faire savoir !

    Cordialement.

    DeWaRs

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Points : 98
    Points
    98
    Par défaut
    Salut,

    Merci pour ta réponse. Effectivement je suis un peu perdu quand tu parles des propriétés CSS.

    Pour l'instant j'ai réussi de modifier le format du texte ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tableau_entete = New PdfPTable(1)           
    cellule.Colspan = 1   
    Dim entete As New Phrase("Tableau récapitulatif de " & Form1.ComboBox1.Text, FontFactory.GetFont("Arial", 14, Font.BOLD))
     
    tableau_entete.AddCell(entete)
    Je pensais qu'on pouvait aussi directement rajouter un truc du style alignment.center ???

    Sinon tu pourrais adapter ton code à ce que je t'ai mis ?

    Merci

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Points : 98
    Points
    98
    Par défaut
    Re à tous,

    Bon, après moultes recherches, j'ai réussi à trouver comment définir une hauteur minimum aux lignes des tableaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim police As Font = FontFactory.GetFont("Arial", 8)
    Dim resultat = New PdfPCell(New Phrase(cellText, police))
    resultat.MinimumHeight = 20
    (cellText est un texte + ou moins long)

    Je bute sur la manière de centrer le texte . J'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    resultat.HorizontalAlignment = 1
    resultat.VerticalAlignment = 1
    Le texte se centre bien en horizontal dans la cellule mais pas verticalement.

    Quelqu'un aurait une piste là dessus ?
    Merci d'avance

Discussions similaires

  1. Réponses: 10
    Dernier message: 29/07/2014, 10h50
  2. [XL-2003] tableau avec mise en forme coller dans autre feuil
    Par antoine2933 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/07/2011, 17h47
  3. Réponses: 2
    Dernier message: 14/12/2009, 12h10
  4. Réponses: 1
    Dernier message: 20/04/2009, 15h26
  5. Mise en forme tableau word avec VB6
    Par alexxx69 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 03/04/2007, 12h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo