Exporter Contenu Windows Form vers PDF [Résolu]

Signaler
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
-
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
-
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

3 réponses

Messages postés
7365
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 mai 2021
122
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

Messages postés
7365
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
6 mai 2021
122
Voilà

Label1.Text = "azerty"
        RichTextBox1.BackColor = Color.Red
        RichTextBox1.ForeColor = Color.Blue
        RichTextBox1.Text = Label1.Text & "   essai"
        RichTextBox1.Font = New Font("Georgia", 16)
        RichTextBox1.SelectionStart = 0
        RichTextBox1.SelectionLength = 6
        RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Underline)


@+
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020

cette ligne me donne une erreur
RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Underline)


Overload resolution failed because no accessible 'New' accepts this number of arguments !!
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020

c'est bon j'ai réglé le problème , la déclaration devait être comme ca :
 RichTextBox1.SelectionFont = New System.Drawing.Font(RichTextBox1.Font, FontStyle.Underline)
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020

si le texte est en gras et je sélectionne un label pour le souligné , il devient souligné mais sans gras !!! est-ce-que je peux faire les deux en même temps ?
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020

j'ai résolu ca aussi hhhh , j'ai mis
 RichTextBox1.SelectionFont = New System.Drawing.Font(RichTextBox1.Font, FontStyle.Underline + FontStyle.Bold)
Messages postés
15918
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540
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
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020

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
Messages postés
15918
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540
Si tu codes ça comme il faut, l'utilisateur n'aura rien à faire.
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020

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 :

Messages postés
15918
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540 >
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020

de quoi?
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
>
Messages postés
15918
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021

Je veux exporter les champs vers un PDF ou bien le contenu du grand TextBox en PDF et non pas l'imprimer directement ! Et les liens que tu m'as donné ce sont des convertisseur et pas un code sur vb
Messages postés
15918
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540
Bien sûr que ce sont des convertisseurs, VB.net ne sait pas écrire un pdf nativement.

Pour chacune de ces dll, il y a de la documentation, des tutos.
Si je prends, shaprPDF, par exemple, http://sharppdf.sourceforge.net/Tutorials.html#T1
y'en a du code là non?

Et si tu n'arrives pas à faire le parallèle entre C# et VB.Net, il suffit d'utiliser un traducteur en ligne
Messages postés
15918
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021
540 >
Messages postés
15918
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021

et une imprimante PDF ça n'imprime pas sur du papier, ça se fait passer pour une imprimante et ça "imprime" ce qu'on lui envoie en pdf. C'est aussi un convertisseur.
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
>
Messages postés
15918
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
6 mai 2021

Je suis perdu je ne sais plus quoi faire où par où commencer