Imprimer fichier texte [Résolu]

Signaler
Messages postés
8
Date d'inscription
mercredi 31 octobre 2012
Statut
Membre
Dernière intervention
25 février 2010
-
Messages postés
8
Date d'inscription
mercredi 31 octobre 2012
Statut
Membre
Dernière intervention
25 février 2010
-
Bonjour à tous et à toutes


Voilà, j'ai mon programme dans lequel un fichier texte se créée (du texte, des calcul...), bref, là n'est pas le problème.

Mon fichier texte est bien beau et existe, mais pendant l'application j'aimerai l'imprimé, sans devoir allez le chercher dans le pc ou autre.

Je connais le nom du fichier, son chemin d'accès, je n'ai qu'à l'imprimer...

Je galère depuis deux jour et je ne trouve rien... Mais je pense (j'espère) qu'il existe une fonction toute simple du genre:

Print(chemin d'accès, nom de fichier)

ou autre (c'est beau l'espoir)


Merci d'avance, je suis en galère :s

11 réponses

Messages postés
69
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
24 février 2010
2
Bonjour , j'espere que ce code te seras util :

      Dim monProcess As New Process()
      monProcess.StartInfo.FileName = Chemin
      monProcess.StartInfo.Verb = "Print"
      monProcess.StartInfo.CreateNoWindow = True
      monProcess.Start()
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
5
Bonjour,

Dans ton projet tu peux rajouter un composant "Printdocument"
Ensuite il suffit de spécifier dans dans le paramètre "Documentname" le chemin de ton fichier, puis de lancer "print":

PrintDocument1.DocumentName = chemin_txt
PrintDocument1.Print()

L'expérience, c'est une connerie par jour, mais jamais la même..
Messages postés
8
Date d'inscription
mercredi 31 octobre 2012
Statut
Membre
Dernière intervention
25 février 2010

Code de mon bouton imprimer

    Private Sub BT_IMPRIMER_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_IMPRIMER.Click

        PrintDocument1.DocumentName = "c:\test2\te-st.txt"

        PrintDocument1.Print()

    End Sub


il m'imprime une feuille blanche...


ps: j'adore ta dernière phrase ;)
Messages postés
113
Date d'inscription
lundi 31 mars 2003
Statut
Membre
Dernière intervention
19 décembre 2011
2
Bonjour,

Dans VB 6.0, il y a aussi l'objet Printer. Rien a ajouter pour l'utiliser mais pas trop pratique de prime abord... Je peux t'aider si besoin.

Pac
Messages postés
113
Date d'inscription
lundi 31 mars 2003
Statut
Membre
Dernière intervention
19 décembre 2011
2
Oups, on est pas dans VB 6.0 ! Je sors...

Pac
Messages postés
8
Date d'inscription
mercredi 31 octobre 2012
Statut
Membre
Dernière intervention
25 février 2010

Oui vb.net... Merci quand même :p

Toujours personne??
Messages postés
8
Date d'inscription
mercredi 31 octobre 2012
Statut
Membre
Dernière intervention
25 février 2010

Alors ça c'est ce que j'appelle de la simplicité, je te remercie grandement.

Et tu serait mon idole si tu savait comment on modifier les marge d'un fichier texte en vb.net :D

Mon fichier passe sur une feuille, mais lorsqu'on imprime directement, il nous fait des marge a la Microsoft Word : 2cm sur chaque côté.
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
5
Ha oui j'y pensais plus à cette méthode en .net le printdocument est effectivement un peu plus complexe ;)




L'expérience, c'est une connerie par jour, mais jamais la même..
Messages postés
8
Date d'inscription
mercredi 31 octobre 2012
Statut
Membre
Dernière intervention
25 février 2010

C'est vrai que cette méthode là est basique est simple mais 3 ou 4 truc me dérange :

- les marges
- le nom du fichier texte en haut de la feuille.

Voilà, bien que ma question ai eu une réponse, mon problème n'est toujours pas réglé :s
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
5
Voici qui devrait plus répondre à tes attentes où tu peux spécifier la marge (si besoin un lien avec un cours ici:

Imports System.Drawing.Printing
Imports System.io

Inherits System.Windows.Forms.Form
Private printFont As Font
Private streamToPrint As StreamReader



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
streamToPrint = New StreamReader("C:\Analyse.txt")
Try
printFont = New Font("Arial", 10)
Dim pd As PrintDocument = New PrintDocument() 'déclaration du PrintDocument
AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
pd.Print()
Finally
streamToPrint.Close()
End Try

Catch ex As Exception
MessageBox.Show("Une erreur est survenue: - " + ex.Message)
End Try

End Sub

'Evènement survenant pour chaque page imprimer
Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As System.Drawing.Printing.PrintPageEventArgs)

Dim lpp As Single = 0 'nombre de ligne par page
Dim yPos As Single = 0 'ordonnée
Dim count As Integer = 0 'numéro de ligne
Dim leftMargin As Single = ev.MarginBounds.Left
Dim topMargin As Single = ev.MarginBounds.Top
Dim line As String

'calcul le nombre de ligne par page
' hauteur de la page/hauteur de la police de caractère
lpp = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)


'lit une ligne dans le fichier
line = streamToPrint.ReadLine()


'Boucle affichant chaque ligne

While (count < lpp And line <> Nothing)

yPos = topMargin + (count * printFont.GetHeight(ev.Graphics))

'Ecrit le texte dans l'objet graphique
ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, _
yPos, New StringFormat())

count = count + 1

If (count < lpp) Then
line = streamToPrint.ReadLine()
End If

End While

'S'il y a encore des lignes, on réimprime une page
If (line <> Nothing) Then
ev.HasMorePages = True
Else
ev.HasMorePages = False
End If

End Sub


L'expérience, c'est une connerie par jour, mais jamais la même..
Messages postés
8
Date d'inscription
mercredi 31 octobre 2012
Statut
Membre
Dernière intervention
25 février 2010

Merci pour ce code bien complet.

Mais je ne m'en servirais pas. Je m'explique. Il permet en effet, de bien imprimer à sa façon mais il y a quelques problèmes :

- il ne prend pas en compte les tabulations du fichier texte, et dans mes fichier texte elle me permettent de faire une "belle" mise en page.

- dès qu'une ligne est vide, (retour a la ligne) il s'arrête. Donc si vous laissez un espace entre deux ligne l'impression se termine trop tôt.


Sinon ce code marche bien, mais dans mon cas, il est inutile.

Merci quand même