Imprimer un fichier texte en dotnet

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 238 fois - Téléchargée 40 fois

Contenu du snippet

ce code n'est pas de moi...mais vu que j'en ai ch..r pour le trouver....je le poste...ca peut tjs servir a quelqu'un

Source / Exemple :


Public Class PrintingExample
    Inherits System.Windows.Forms.Form
    Private components As System.ComponentModel.Container
    Private printButton As System.Windows.Forms.Button
    Private printFont As Font
    Private streamToPrint As StreamReader
    
    Public Sub New()
        ' The Windows Forms Designer requires the following call.
        InitializeComponent()
    End Sub    
    
    ' The Click event is raised when the user clicks the Print button.
    Private Sub printButton_Click(sender As Object, e As EventArgs)
        Try
            streamToPrint = New StreamReader("C:\My Documents\MyFile.txt")
            Try
                printFont = New Font("Arial", 10)
                Dim pd As New PrintDocument()
                AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
                pd.Print()
            Finally
                streamToPrint.Close()
            End Try
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub    
    
    ' The PrintPage event is raised for each page to be printed.
    Private Sub pd_PrintPage(sender As Object, ev As PrintPageEventArgs)
        Dim linesPerPage As Single = 0
        Dim yPos As Single = 0
        Dim count As Integer = 0
        Dim leftMargin As Single = ev.MarginBounds.Left
        Dim topMargin As Single = ev.MarginBounds.Top
        Dim Line As String = Nothing
        
        ' Calculate the number of lines per page.
        linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)
        
        ' Print each line of the file.
        While count < linesPerPage
            Line = streamToPrint.ReadLine()
            If Line Is Nothing Then
                Exit While
            End If      
            yPos = topMargin + count * printFont.GetHeight(ev.Graphics)
            ev.Graphics.DrawString(Line, printFont, Brushes.Black, leftMargin, yPos, New StringFormat())
            count += 1
        End While
        
        ' If more lines exist, print another page.
        If Not (Line Is Nothing) Then
            ev.HasMorePages = True
        Else
            ev.HasMorePages = False
        End If
    End Sub
     
    
    ' The Windows Forms Designer requires the following procedure.
    Private Sub InitializeComponent()
        Me.components = New System.ComponentModel.Container()
        Me.printButton = New System.Windows.Forms.Button()
        
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(504, 381)
        Me.Text = "Print Example"
        
        printButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
        printButton.Location = New System.Drawing.Point(32, 110)
        printButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat
        printButton.TabIndex = 0
        printButton.Text = "Print the file."
        printButton.Size = New System.Drawing.Size(136, 40)
        AddHandler printButton.Click, AddressOf printButton_Click
        
        Me.Controls.Add(printButton)
    End Sub 

    ' This is the main entry point for the application.    
    Public Shared Sub Main()
        Application.Run(New PrintingExample())
    End Sub

End Class

Conclusion :


je repete bien que ce code n'est pas de moi....
c juste pour que les debutants en impression dtnet (comme moi:)) y arrive

A voir également

Ajouter un commentaire Commentaires
Messages postés
3
Date d'inscription
vendredi 12 décembre 2008
Statut
Membre
Dernière intervention
15 mars 2011

oh ci bon mai j cherche le code d'un bouton imprimer ki prend des information de la base de donne , les traiter sur une doc et les imprimer
merci
Messages postés
7
Date d'inscription
jeudi 26 juillet 2007
Statut
Membre
Dernière intervention
29 octobre 2008

Salut tout le monde,

J'ai modifié le bouzin un petit peu, dans le cas où la ligne soit trop longue. Avec ce code, elle se termine à droite de la feuille.

Du coup, il faut dessiner un rectangle dans lequel sera imprimée la ligne et si elle est plus longue que le rectangle, le retour à la ligne se fait automatiquement.

Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As Printing.PrintPageEventArgs)
Dim linesPerPage As Single = 0
Dim yPos As Single = 0
Dim count As Integer = 0
Dim leftMargin As Single = 50
Dim topMargin As Single = 70
Dim Line As String = Nothing

' nombre de lignes par page
linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)

' impression de chaque ligne de la page
While count < linesPerPage
Line = streamToPrint.ReadLine()
If Line Is Nothing Then
Exit While
End If

yPos = topMargin + count * printFont.GetHeight(ev.Graphics)
Dim rectangle As New RectangleF(leftMargin, yPos, 700, 150)
ev.Graphics.DrawString(Line, printFont, Brushes.Black, rectangle)

'mesure la longueur de la chaine pour savoir si il faut l'imprimer sur une ou plusieurs lignes
Dim stringSize As New SizeF
stringSize = ev.Graphics.MeasureString(Line, printFont)
count += 1 + (stringSize.Width \ 700) 'si la longueur est > 700, alors l'impression se fait sur x lignes
End While

' s'il reste des lignes, on imprime une autre page
If Not (Line Is Nothing) Then
ev.HasMorePages = True
Else
ev.HasMorePages = False
End If
End Sub
Messages postés
3
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
22 juin 2004

Therealkiller dit: Ok je viens de trouver la VRAI source MSDN...

OUUUUUU??
Je démarre sous .net avec la migration d'une appli de compta avec des tones de Printer.Print :((((

Alors un petit coup de pouce serait cool pour que l'impression de mes états refonctionne...
Messages postés
88
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
27 mars 2006

c bien ce ke je pensai pour le html c different c con imprime le code html . Personne oré une solution . Merci
Messages postés
88
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
27 mars 2006

Voila imports sinon ca marche pas ...

System.ComponentModel, System.Windows.Forms, System.Drawing, System.Drawing.Printing, and System.IO namespaces for this example.
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.