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 :

Export fichier PDF


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 22
    Par défaut Export fichier PDF
    Bonjour à tous,

    Je viens de développer un module d'impression à l'aide de la classe Graphics.Draw et j'aimerais maintenant appeler la même méthode qui établie le document pour pouvoir l'exporter en PDF dans un dossier correspondant et en lui donnant un nom qui convient.
    Seulement je ne sais pas comment m'y prendre..

    Je fais d'abord un test pour voir si le fichier existe ou pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'Vérifie si le fichier à crééer existe déjà ou non
            Dim trouve As Boolean
            trouve = False
            For Each files As String In My.Computer.FileSystem.GetFiles("C:\Scan", FileIO.SearchOption.SearchTopLevelOnly)
                ' FileIO.SearchOption.SearchTopLevelOnly cherche uniquement dans ce dossier en excluant les sous-dossiers
                Dim Fi As New System.IO.FileInfo(files) ' Instanciation du fichier trouvé
                If (Fi.Name = "devis" & tbx_dev_code.Text & ".pdf") Then
                    trouve = True
                End If
            Next
            If (trouve) Then
                My.Computer.FileSystem.DeleteFile("C:\Scan\devis" & tbx_dev_code.Text & ".pdf")
            End If
    Ensuite je défini l'imprimante par défaut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Change le nom de l'imprimante par défaut
            Dim net
            net = CreateObject("WScript.Network")
            net.SetDefaultPrinter("PDFCreator")
    Après je pensais qu'en appelant la même méthode que pour l'impression, cela marchait..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'appel de la fonction construisant le document
            Dim pd As New PrintDocument()
     
            'Quand "Printpage" sur l'objet "pd", appel de la procédure "impression_page"
            AddHandler pd.PrintPage, AddressOf Me.impression_page
    Puis enfin je vérifie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'ajout
            Dim filesys = CreateObject("Scripting.FileSystemObject")
     
            If filesys.FileExists("C:\Scan\DEVIS_RS_FIXE.pdf") Then
                My.Computer.FileSystem.RenameFile("C:\Scan\DEVIS_RS_FIXE.pdf", "devis" & tbx_dev_code.Text & ".pdf")
            ElseIf filesys.FileExists("C:\Scan\DEVIS_RS_GSM.pdf") Then
                My.Computer.FileSystem.RenameFile("C:\Scan\DEVIS_RS_GSM.pdf", "devis" & tbx_dev_code.Text & ".pdf")
            End If
            ''fin ajout
    Je n'ai plus trop d'idées..

    Merci pour votre aide

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Pourquoi utiliser le FileSystemObject ?

    Les classes Directory, DirectoryInfo, File et FileInfo du Framework ont tout ce qu'il faut pour éviter FSO et travailler plus efficacement.

    Ceci dit, VB.net ne supporte pas le format PDF en natif. Tu peux utiliser des bibliothèques supplémentaires, (PDFSharp et ItextSharp et peut-êtres d'autes, sont gratuites), pour créer/modifier un fichier PDF ou "Imprimer" (créer) un fichier PDF avec une "imprimante" virtuelle PDF, du genre PDFCreator ou Bullzip PDF Printer (les deux sont gratuits).

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    PDFCreator est une imprimante comme les autres, si tu arrives à imprimer sur une imprimante normale ca devrait fonctionner

    si tu n'y arrives dis nous ce qui se passe (message d'erreur et autres)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    net.SetDefaultPrinter("PDFCreator")
    par contre ca c'est peu commun en .net

    avant d'appeler .print on peut définir l'imprimante à utiliser sur le printdocument (via printcontroller.printername il me semble)
    et sans changer l'imprimante par défaut donc
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 216
    Par défaut
    Perso, j'arrive à créer des fichiers PDF facilement. Voici le code de ma classe. Il n'a aucune portée généraliste et, n'est peut-être pas toujours commenté de manière fort explicite. Mais ça fonctionne. Si ça peut aider...

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    Imports System.Drawing.Printing
    Imports System.IO
     
    Public Class ClassPrintingAndPDF
        Inherits System.Drawing.Printing.PrintDocument
     
        Private WhatIsPrinting As String = ""
        Private strPrinting As String = ""
        Private oFont As System.Drawing.Font
        Private cDossierBitMaps As String = ""
        Private oCollBitmapsToPDF As New Collection
        Private NumPage As Integer = 0
        Private NbrPageCount As Integer = 1
     
        ''' <summary>
        ''' Imprimer une chaîne de caractères
        ''' </summary>
        ''' <param name="pStrPrinting">La chaîne</param>
        ''' <param name="pFont">La police</param>
     
        Sub New(pStrPrinting As String, pFont As System.Drawing.Font)
            MyBase.New()
            WhatIsPrinting = "aString"
            strPrinting = pStrPrinting
            oFont = pFont
        End Sub
     
        ''' <summary>
        ''' Imprimer des BitMaps
        ''' </summary>
        ''' <param name="cDossierBmp">Répertoire des Bitmaps à imprimer dans le fichier PDF</param>
        ''' <param name="cMasque">Masque des fichiers BitMaps</param>
        ''' <param name="cFilePDF">Nom du fichier PDF</param>
        ''' <param name="cPrinter">Nom de l'imprimante</param>
     
        Sub New(ByVal cDossierBmp As String, ByVal cMasque As String, ByVal cFilePDF As String, _
                ByVal cPrinter As String)
            MyBase.New()
            If ExistDirectory(cDossierBmp) Then
                cDossierBitMaps = AddBS(cDossierBmp)
                oCollBitmapsToPDF = ReadDirectory(cDossierBmp, cMasque)
                If oCollBitmapsToPDF.Count > 0 Then
                    NbrPageCount = oCollBitmapsToPDF.Count
                    If Not String.IsNullOrEmpty(cFilePDF) Then
                        MyBase.PrinterSettings.PrinterName = cPrinter
                    End If
                    MyBase.DocumentName = AddBS(My.Settings.pAppDossierZip) & cFilePDF.Trim
                    WhatIsPrinting = "SomeBitmaps"
                End If
            End If
        End Sub
     
        Shadows Sub PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) _
                Handles MyBase.PrintPage
            Try
                Select Case True
                    Case WhatIsPrinting = "aString"
                        e.Graphics.DrawString(strPrinting, oFont, Brushes.Black, 150, 125)
                    Case WhatIsPrinting = "SomeBitmaps"
                        Dim nHeightPage As Integer = MyBase.DefaultPageSettings.PaperSize.Height
                        Dim nWidthPage As Integer = MyBase.DefaultPageSettings.PaperSize.Width
                        Dim rectPage As New Rectangle(0, 0, nWidthPage, nHeightPage)
                        NumPage = NumPage + 1
                        Dim NewPageBmp As Bitmap = LoadBitMaps(NumPage)
                        If NewPageBmp IsNot Nothing Then
                            e.Graphics.DrawImage(NewPageBmp, rectPage)
                        End If
                        Select Case True
                            Case NumPage < NbrPageCount
                                e.HasMorePages = True
                            Case NumPage >= NbrPageCount
                                e.HasMorePages = False
                        End Select
                End Select
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical, My.Settings.pAppEnteteBox)
            End Try
        End Sub
     
        Private Function LoadBitMaps(ByVal nItem As Integer) As Bitmap
            Try
                If (nItem > 0 And nItem <= oCollBitmapsToPDF.Count) Then
                    Dim cFileBmp As String = cDossierBitMaps & oCollBitmapsToPDF.Item(nItem)
                    If ExistFile(cFileBmp) Then
                        Dim oStream As FileStream = New FileStream(cFileBmp, FileMode.Open)
                        Dim oNewBitMap As Bitmap = Image.FromStream(oStream)
                        Return oNewBitMap
                    Else
                        MsgBox("Fichier non trouvé!" & vbCrLf & cFileBmp, MsgBoxStyle.Exclamation, _
                               My.Settings.pAppEnteteBox)
                        Return Nothing
                    End If
                Else
                    MsgBox("Erreur d'item: " & nItem.ToString, MsgBoxStyle.Critical, My.Settings.pAppEnteteBox)
                    Return Nothing
                End If
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical, My.Settings.pAppEnteteBox)
                Return Nothing
            End Try
        End Function
    End Class

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Et avec (en suivant les indications de Pol63.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                    Dim prdoc As New System.Drawing.Printing.PrintDocument()
                    prdoc.PrinterSettings.PrinterName = "PDFCreator"
                    AddHandler prdoc.PrintPage, AddressOf PrDoc_PrintPage
                    prdoc.Print()
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 22
    Par défaut
    Merci, ça marche bien.

    J'aimerais maintenant modifier le nom du fichier pour ne pas avoir à le faire à la main et puis j'aimerais aussi que la boite de dialogue pdf creator ne s'affiche plus et que le fichier s'enregistre automatiquement dans le dossier que j'ai choisi.. Est-ce possible?

    Merci pour votre aide!

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

Discussions similaires

  1. Exporter un état en fichier pdf sous access 2010
    Par titi_la_vermine dans le forum VBA Access
    Réponses: 0
    Dernier message: 25/08/2010, 16h30
  2. Réponses: 5
    Dernier message: 17/10/2009, 12h22
  3. [VBA]Spécifier le chemin d'exportation d'un fichier PDF
    Par romulus34 dans le forum VBA Access
    Réponses: 8
    Dernier message: 25/04/2007, 14h38
  4. exportation des fichiers PDF
    Par l'indien_obscur dans le forum Access
    Réponses: 1
    Dernier message: 07/06/2006, 20h14
  5. [FPDF] Export de PDF à partir d'un fichier PHP
    Par Mat5725 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 05/04/2006, 20h57

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