Exporter Contenu Windows Form vers PDF

Résolu
andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
- 19 déc. 2017 à 12:15
andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
- 27 déc. 2017 à 16:16
Bonjour, tout le monde , je sollicite votre aide , j'ai une application vb.net qui fait l'insertion de données vers ma base sql , et je voudrais ensuite imprimé ce que j'ai insérer sous forme d'une fiche en PDF , est-ce-que quelqu'un aurait une idée comment faire ça ? pour être claire , voici mon application :



et voici ce que je veux comme résultat d'exportation :




Merci d'avance
A voir également:

3 réponses

andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
1
19 déc. 2017 à 18:17
En fait j'ai procédé autrement , j'ai mis un TextBox qui affiche tout les données et j'arrive a l'exporter maintenant mais en fichier Txt , avec ce code :
Dim iSave As New SaveFileDialog

iSave.Filter = "txt files (*.txt) |*.txt"
iSave.FilterIndex = 2
iSave.RestoreDirectory = False

If iSave.ShowDialog() = DialogResult.OK Then

IO.File.WriteAllText(iSave.FileName, TextBox4.Text)

End If


comment je peux faire que ça soit un PDF et non Txt ???
voici mon Form :

1
Whismeril
Messages postés
17328
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
596
19 déc. 2017 à 19:11
soit tu l’envoie à une imprimante pdf, soit tu utilises une des librairies que je t’ai mis en lien dans ma première réponse
0
andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
1 > Whismeril
Messages postés
17328
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022

19 déc. 2017 à 19:51
Comment faire l'envoi a une imprimante PDF ? Peut tu expliquer plus ?
0
Whismeril
Messages postés
17328
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
596
19 déc. 2017 à 20:55
http://codes-sources.commentcamarche.net/forum/affich-888036-imprimer-un-fichier-texte

et au lieu de choisir une imprimante physique, tu choisis une imprimante pdf, Pdf Creator par exemple.

Ou sinon, (comme semble t il tu n'arrives pas à le lire quand je l'écris normalement) je t'ai mis un lien plus haut avec 3 dll qui font du pdf directement
0
andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
1 > Whismeril
Messages postés
17328
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022

19 déc. 2017 à 21:25
D'accord je vais voir merci beaucoup c'est gentil
0
andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
1 > andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020

20 déc. 2017 à 17:35
Malheureusement ce n'est pas ce que je cherche
0
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129
21 déc. 2017 à 12:15
Bonjour,

Si tu ne veux pas te servir d 'imprimante virtuelle, comme te le préconise Whismeril que je salue. Il te reste la possibilité d'enregistrer la Textbox en Word, car depuis Office 2007 on peut enregistrer un document Word en PDF.

Mettre dans un Form un Button et une TexBox avec ce code, il te restera à adapter les chemins qui sont en dur:

'Aller dans My Project- Références et ajouter dans COM:
'Microsoft Word 12.0 Object Library
Option Strict On
Imports System.IO
Imports Microsoft.Office.Interop
Public Class Form1
    Dim cheminpdf As String 'chemin PDF
    Dim ext As String
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim objWord = New Word.Application
        Dim objDoc As Word.Document
        Dim missing As Object = System.Reflection.Missing.Value
        TextBox1.SelectAll()
        TextBox1.Copy()
        objDoc = objWord.Documents.Add(missing, missing, missing, missing)
        'objWord.Visible = True
        objWord.Selection.Paste()
        'on enregistre en Document Word (texte brut) 'adapter chemin
        objWord.ActiveDocument.SaveAs(FileName:="C:\Users\LEPIVERT\Documents\essai.docx", FileFormat:=Word.WdSaveFormat.wdFormatDocumentDefault, _
        LockComments:=False, Password:="", AddToRecentFiles _
        :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
        :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False)
        'Mise en place d'un objet OpenFileDialog pour ouvrir un fichier 
        Dim openFD As New OpenFileDialog
        With openFD
            .Filter = "Word Files  (*.docx)|*.docx"
            .FilterIndex = 1
            .Title = "Sélectionnez le document Word que vous souhaitez ouvrir."
            .FileName = "C:\Users\LEPIVERT\Documents\essai.docx" 'adapter chemin
            DialogResult = .ShowDialog
            If DialogResult = System.Windows.Forms.DialogResult.OK Then
                objDoc = objWord.Documents.Open(CStr(.FileName))
                cheminpdf = CStr(.FileName)
                ext = System.IO.Path.GetExtension(CStr(.FileName))
                cheminpdf = cheminpdf.Replace(ext, ".pdf")
                'enregistre en PDF a partir de Office 2007
                objDoc.SaveAs(CStr(cheminpdf), Word.WdSaveFormat.wdFormatPDF)
                objWord.Quit()
                MessageBox.Show("Enregistré dans le même dossier que le document Word", "Enregistrement en PDF", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Process.Start(cheminpdf)
                System.IO.File.Delete("C:\Users\LEPIVERT\Documents\essai.docx") 'supprime doc Word 'adapter chemin
            Else
                MessageBox.Show("Opération annulée par l'utilisateur!", "Enregistrement en PDF", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
            End If
            .Dispose()
        End With
    End Sub

End Class

1
andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
1
21 déc. 2017 à 12:53
Merci beaucoup c'est très utile , merci a vous tous
0
andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
1
21 déc. 2017 à 16:15
juste un truc , est-ce-que c'est nécessaire d'avoir a chaque fois un fichier pour le remplacer , ou bien je peux changer dans le code pour créer un nouveau fichier ??
0
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129
21 déc. 2017 à 18:09
ou bien je peux changer dans le code pour créer un nouveau fichier ??

C'est ce que fait le code ici:

 objDoc = objWord.Documents.Add(missing, missing, missing, missing)


et on le supprime ici:

  System.IO.File.Delete("C:\Users\LEPIVERT\Documents\essai.docx") 'supprime doc Word 'adapter chemin


ce code fait ce que tu as demandé:

comment je peux faire que ça soit un PDF

qu'est-ce qui te gêne, je ne comprends pas?

tu peux remplacer les chemins en dur avec ceci:

My.Application.Info.DirectoryPath & "\essai.docx"


les fichiers se trouvent alors avec l'exe et s'adaptent à tout environnement!

@+ Le Pivert
0
andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
1
21 déc. 2017 à 18:13
le problème c'est que quand je veux enregistré le fichier il faut le même nom indiqué dans le code , moi je veux que l'utilisateur choisi le nom qu'il veut et l'emplacement qu'il veut
0
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129
21 déc. 2017 à 19:02
Voilà avec un choix de nom de fichier et de dossier de destination. Il faut ajouter une textBox pour entrer le nom du pdf:

  Dim cheminpdf As String 'chemin PDF
    Dim dossier As String
    Dim ext As String
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        If TextBox2.Text = "" Then Exit Sub 'choix du nom du pdf
        Dim objWord = New Word.Application
        Dim objDoc As Word.Document
        Dim missing As Object = System.Reflection.Missing.Value

        TextBox1.SelectAll()
        TextBox1.Copy()
        objDoc = objWord.Documents.Add(missing, missing, missing, missing)
        'objWord.Visible = True
        objWord.Selection.Paste()

        Dim saveFD As New FolderBrowserDialog    'choix du dossier
        With saveFD
            DialogResult = .ShowDialog
            If DialogResult = System.Windows.Forms.DialogResult.OK Then
                dossier = .SelectedPath
            End If
        End With

        'on enregistre en Document Word (texte brut) 'adapter chemin
        objWord.ActiveDocument.SaveAs(FileName:=dossier & "\" & TextBox2.Text & ".docx", FileFormat:=Word.WdSaveFormat.wdFormatDocumentDefault, _
        LockComments:=False, Password:="", AddToRecentFiles _
        :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
        :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False)

        'Mise en place d'un objet OpenFileDialog pour ouvrir un fichier 
        Dim openFD As New OpenFileDialog
        With openFD
            .Filter = "Word Files  (*.docx)|*.docx"
            .FilterIndex = 1
            .Title = "Sélectionnez le document Word que vous souhaitez ouvrir."
            .FileName = dossier & "\" & TextBox2.Text & ".docx" 'adapter chemin
            DialogResult = .ShowDialog
            If DialogResult = System.Windows.Forms.DialogResult.OK Then
                objDoc = objWord.Documents.Open(CStr(.FileName))
                cheminpdf = CStr(.FileName)
                ext = Path.GetExtension(CStr(.FileName))
                cheminpdf = cheminpdf.Replace(ext, ".pdf")
                'enregistre en PDF a partir de Office 2007
                objDoc.SaveAs(CStr(cheminpdf), Word.WdSaveFormat.wdFormatPDF)
                objWord.Quit()
                MessageBox.Show("Enregistré dans le même dossier que le document Word", "Enregistrement en PDF", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Process.Start(cheminpdf)
                File.Delete(dossier & "\" & TextBox2.Text & ".docx") 'supprime doc Word 'adapter chemin
            Else
                MessageBox.Show("Opération annulée par l'utilisateur!", "Enregistrement en PDF", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
            End If
            .Dispose()
        End With
    End Sub


@+ Le Pivert
0
Whismeril
Messages postés
17328
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
596
19 déc. 2017 à 16:00
Bonjour
Une façon de faire est d’avoir un modèle sous word, avec un signet partout où il faut insérer une info.
Tu édites ce modèle avec la libraire Docx, un petit exemple ici. Tu sauvegardes un fichier temporaire que tu envoies à une imprimante pdf.

Sinon, il existe des librairies permettant d’éditer directement des pdf en .Net https://csharp-source.net/open-source/pdf-libraries
0
andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
1
19 déc. 2017 à 16:24
je n'ai pas bien compris , car je n'ai pas besoin d'un word , en fait l'utilisateur ne doit pas passer par les étapes d'enregistrer le fichier sous un autre format puis le convertir et l'imprimer , tu vois , ça doit être simple pour lui
0
Whismeril
Messages postés
17328
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
596
19 déc. 2017 à 17:23
Si tu codes ça comme il faut, l'utilisateur n'aura rien à faire.
0