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 :

Impression d'un formulaire en PDF


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut Impression d'un formulaire en PDF
    Bonjour,
    Je me posais une question
    Mon appli, après divers calculs, me "sort" un formulaire qui regroupe tout ce qui doit être imprimé.
    J'utilise la méthode printform, et pour le moment le logiciel fait une capture du formulaire, crée une image .jpg que je peux ensuite imprimer ou transferer ou autre.
    L'idée future est de ne plus avoir de .jpg contraignant car impossible d'avoir 2 feuilles, mais du PDF.

    En cherchant j'ai trouvé un article qui dit que concrètement, en utilisant la méthode printform, on pouvait faire du PDF en installant "PDF virtual printer" (je suppose une imprimante pdf virtuelle quelconque)

    J'aurais aimé votre avis quant a la pertinence de cette méthode

    Merci beaucoup

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    une imprimante pdf c'est le moyen simple de gérer ca, ca dérange rarement l'utilisateur
    et comparé au printform ce n'est pas un mal

    un fichier excel c'est codable facilement aussi
    sinon il y a le printdocument pour placer ce qu'on veut où on veut et sans passer par excel, en laissant le choix de l'imprimante qui peut etre une imprimante pdf ou une imprimante normale
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Tu peux également utiliser une dll exeterne (ItextSharp, PDFLib, etc)

    Elles sont assez complète, ça nécessite un peu de temps pour comprendre comment ça marche, comment "créer" à la main son PDF etc, mais elles sont très bien fournies et assez intuitive.

  4. #4
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    bonjour a vous 2
    j'ai deja essaye via la dll Itextsharp et j'avoue n'avoir absolument rien compris au fonctionnement

  5. #5
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Il y a ce cours : http://dotnet.developpez.com/articles/itextsharp/

    C'est du C# mais c'est compréhensible à la lecture ...

    Après si c'est juste qlqes petits trucs je peux (peut-être) t'aider.

  6. #6
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    merci ezkiel
    ben déjà je voudrais procéder en 2 étapes si c'est faisable

    Etape 1 : Pouvoir imprimer et enregistrer sur deux feuilles A4
    Voila le classimpression
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Imports System.Drawing.Printing
    Public Class ClassImpression
        Private Declare Function StretchBlt Lib "gdi32.dll" Alias "BitBlt" (ByVal _
               hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As _
               Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal _
               hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, _
               ByVal dwRop As System.Int32) As Long
        Private myimage As Bitmap
        Private thectrl As Control
        Private Function Capturectrl(ByVal ctrl As Control) As Bitmap
            Dim memoryImage As Bitmap
            Dim mygraphics As Graphics = ctrl.CreateGraphics()
            Dim s As Size = ctrl.Size
            memoryImage = New Bitmap(s.Width - 3, s.Height - (SystemInformation.FrameBorderSize.Width + 3 + SystemInformation.CaptionHeight), mygraphics)
            Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
            Dim dc1 As IntPtr = mygraphics.GetHdc
            Dim dc2 As IntPtr = memoryGraphics.GetHdc
            StretchBlt(dc2, 0, 0, ctrl.ClientRectangle.Width, _
               ctrl.ClientRectangle.Height, dc1, 0, 0, 13369376)
            mygraphics.ReleaseHdc(dc1)
            memoryGraphics.ReleaseHdc(dc2)
            Return memoryImage
        End Function
        Public Function GetPreview() As Bitmap
            Return Capturectrl(thectrl)
        End Function
        Public Sub printdoc()
            Try
                Dim prtd As New PrintDialog
                'document à imprimer
                Dim doc As New PrintDocument
                myimage = Capturectrl(thectrl)
                AddHandler doc.PrintPage, AddressOf printform
                'paramètres de page
                Dim ps As New PageSettings
                ps.Landscape = False
                doc.DefaultPageSettings = ps
                'indique à la prévisualisation le document à montrer
                prtd.Document = doc
                If prtd.ShowDialog = DialogResult.OK Then
                    prtd.Document.Print()
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
        Private Sub printform(ByVal sender As Object, ByVal e As PrintPageEventArgs)
            Try
                e.Graphics.DrawImage(myimage, 0, 0)
                e.HasMorePages = False
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
        Public Sub New(ByVal ctrl As Control)
            thectrl = ctrl
        End Sub
    End Class
    Il y a donc capture d'écran du formulaire et transformation en .jpg pour ensuite être traitée (imprimée, sauvegardée, transferée, etc ...)

    Mon formulaire est au maximum des dimensions possibles et, le logiciel évoluant, j'ai plus d'informations a stocker mais pas de place pour les mettre.

    Concrètement, j'ai actuellement cela :


    Moi je voudrais cela :


    autrement dit comment faire pour que mon printform ait "plus de place"

    Etape 2 : Passer le .jpg en PDF en gardant le même "visu"

    Je bloque complètement la dessus et me demande surtout si il faut proceder en 2 etapes ou carrement tout changer d'un coup
    Merci bien

Discussions similaires

  1. [AC-2007] Impression de plusieurs formulaires dans un même pdf.
    Par Tifriis dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/06/2017, 11h09
  2. [AC-2007] impression formulaire en pdf
    Par ronin.01 dans le forum VBA Access
    Réponses: 3
    Dernier message: 22/04/2011, 16h01
  3. impression d'un formulaire
    Par plume75 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/10/2005, 17h44
  4. impression d'un formulaire
    Par RODIER dans le forum Access
    Réponses: 1
    Dernier message: 04/10/2005, 11h44
  5. impression d'un formulaire
    Par fulgaro dans le forum IHM
    Réponses: 6
    Dernier message: 22/06/2005, 14h43

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