Imprimer fichier texte

Résolu
majo59 Messages postés 8 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 25 février 2010 - 24 févr. 2010 à 10:08
majo59 Messages postés 8 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 25 février 2010 - 25 févr. 2010 à 10:33
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

malakrouhhi Messages postés 69 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 24 février 2010 2
24 févr. 2010 à 11:02
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()
2
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
24 févr. 2010 à 10:35
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..
0
majo59 Messages postés 8 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 25 février 2010
24 févr. 2010 à 10:45
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 ;)
0
cs_pacadebord Messages postés 113 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 19 décembre 2011 2
24 févr. 2010 à 10:48
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_pacadebord Messages postés 113 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 19 décembre 2011 2
24 févr. 2010 à 10:49
Oups, on est pas dans VB 6.0 ! Je sors...

Pac
0
majo59 Messages postés 8 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 25 février 2010
24 févr. 2010 à 10:56
Oui vb.net... Merci quand même :p

Toujours personne??
0
majo59 Messages postés 8 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 25 février 2010
24 févr. 2010 à 11:08
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é.
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
24 févr. 2010 à 11:20
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..
0
majo59 Messages postés 8 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 25 février 2010
24 févr. 2010 à 11:24
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
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
24 févr. 2010 à 11:49
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..
0
majo59 Messages postés 8 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 25 février 2010
25 févr. 2010 à 10:33
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
0
Rejoignez-nous