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

C# Discussion :

C# Générer un PDF avec le contenu d'un panel


Sujet :

C#

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut C# Générer un PDF avec le contenu d'un panel
    Bonjour,

    Je souhaite faire un programme tout simple qui permet d'enregistrer un fichier PDF avec le contenu d'un panel.

    J'ai donc commencé par faire ça:

    Nom : Screenshot_1.png
Affichages : 116
Taille : 4,2 Ko

    J'ai choisis d'utiliser iTextSharp

    Lorsque je clique sur le bouton pour générer le PDF, voici le code exécuté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    using (SaveFileDialog sfd = new SaveFileDialog() { Filter = "PDF file|*.pdf", ValidateNames = true })
                {
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        iTextSharp.text.Document doc = new iTextSharp.text.Document(PageSize.A4.Rotate());
                        try
                        {
                            int width = panelTombi.Size.Width;
                            int height = panelTombi.Size.Height;
                            doc.Open();
                            MemoryImage = new Bitmap(width, height);
                            System.Drawing.Rectangle rect = new System.Drawing.Rectangle(0, 0, width, height);
                            panelTombi.DrawToBitmap(MemoryImage, new System.Drawing.Rectangle(0, 0, width, height));
     
                            iTextSharp.text.Image image1 = iTextSharp.text.Image.GetInstance((System.Drawing.Image)MemoryImage, System.Drawing.Imaging.ImageFormat.Jpeg);
                            image1.Alignment = iTextSharp.text.Image.ALIGN_CENTER;
                            image1.ScaleAbsolute(100f, 100f);
                            doc.SetMargins(2f, 4f, 3f, 2f);
     
                            doc.Add(image1);
                            doc.NewPage();
     
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        finally
                        {
                            doc.Close();
                        }
                    }
                }
    J'avais un problème, comment afficher dans le PDF le contenu d'un panel. J'ai donc choisis de transformer le contenu du panel en une image, puis de l'ajouter dans le PDF. J'ai vérifié et la variable image1 est bien une image de la même taille que le panel, ce qui montre qu'à priori l'image est bien générée.

    J'indique le nom du fichier PDF, le code est exécuté, mais aucun fichier PDF n'est créé et je ne comprends pas pourquoi.

    Je ne souhaite pas absolument garder cette façon de faire, mais c'est selon moi l'une des solutions.

    Sauriez vous où se situe l'erreur ?

    Merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut
    J'ai trouvé, j'avais mélangé plusieurs choses.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    using (SaveFileDialog sfd = new SaveFileDialog() { Filter = "PDF file|*.pdf", ValidateNames = true })
                {
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        iTextSharp.text.Document doc = new iTextSharp.text.Document(PageSize.A4.Rotate());
                        try
                        {
                            int width = panelTombi.Size.Width;
                            int height = panelTombi.Size.Height;
     
                            MemoryImage = new Bitmap(width, height);
                            System.Drawing.Rectangle rect = new System.Drawing.Rectangle(0, 0, width, height);
                            panelTombi.DrawToBitmap(MemoryImage, new System.Drawing.Rectangle(0, 0, width, height));
                            iTextSharp.text.Image image1 = iTextSharp.text.Image.GetInstance((System.Drawing.Image)MemoryImage, System.Drawing.Imaging.ImageFormat.Png);
                            image1.Alignment = iTextSharp.text.Image.ALIGN_CENTER;
     
     
     
                            //Save pdf file
                            PdfWriter.GetInstance(doc, new FileStream(sfd.FileName, FileMode.Create));
                            doc.Open();
                            doc.Add(image1);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        finally
                        {
                            doc.Close();
                        }
                    }
                }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Générer un PDF avec le contenu d'un <div> ou l'imprimer PDFCreator
    Par MelkInarian dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/02/2017, 15h32
  2. Générer du PDF avec QuickReport
    Par yanis97 dans le forum Composants VCL
    Réponses: 11
    Dernier message: 29/07/2008, 16h59
  3. [FPDF] Générer un PDF avec saisie utilisateur
    Par Overkill06 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 26/09/2007, 19h42
  4. Générer des pdf avec Perl
    Par vincbruv dans le forum Modules
    Réponses: 1
    Dernier message: 13/02/2007, 16h19
  5. [FPDF] Générer un PDF avec intégration de fonctions
    Par allowen dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 25/04/2006, 13h50

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