vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Drucken ohne Druckvorschau 
Autor: mrnr2
Datum: 21.06.11 12:08

Hi FZelle,
danke für die Antwort.
Anbei die Klasse "Schnelldruck".
Vielleicht findest du ja den "Fehler"
 
Imports System
Imports System.IO
Imports System.Data
Imports System.Text
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Printing
Imports System.Collections.Generic
Imports System.Windows.Forms
Imports Microsoft.Reporting.WinForms
 
 
Public Class cls_Schnelldruck
    Implements IDisposable
 
    Private m_currentPageIndex As Integer
    Private m_streams As IList(Of Stream)
 
    Private Sub Run(ByVal reportname As String, ByVal datatabelname As String, _
      ByVal XML_Datei As String, ByVal zu_drucken As String)
        Dim report As New LocalReport()
 
        report.ReportEmbeddedResource = "IQDiagnostics." & reportname
 
        report.DataSources.Add(New ReportDataSource(datatabelname, Laden_Daten( _
          XML_Datei)))
        Export(report)
        Print(zu_drucken)
    End Sub
 
    Private Function Laden_Daten(ByVal XML_Datei As String) As DataTable
        Dim dataSet As New DataSet()
 
        dataSet.ReadXml("F:\IQDiagnostics\IQDiagnostics\bin\Debug\" & XML_Datei)
 
        Return dataSet.Tables(0)
    End Function
 
    Private Function CreateStream(ByVal name As String, ByVal fileNameExtension _
      As String, ByVal encoding As Encoding, ByVal mimeType As String, ByVal _
      willSeek As Boolean) As Stream
        Dim stream As Stream = New MemoryStream()
        m_streams.Add(stream)
        Return stream
    End Function
 
    Private Sub Export(ByVal report As LocalReport)
        Try
            Dim deviceInfo As String = "<DeviceInfo>" & _
                "<OutputFormat>EMF</OutputFormat>" & _
                "<PageWidth>8.5in</PageWidth>" & _
                "<PageHeight>11in</PageHeight>" & _
                "<MarginTop>0in</MarginTop>" & _
                "<MarginLeft>0in</MarginLeft>" & _
                "<MarginRight>0in</MarginRight>" & _
                "<MarginBottom>0in</MarginBottom>" & _
                "</DeviceInfo>"
            Dim warnings As Warning()
            warnings = Nothing
            m_streams = New List(Of Stream)()
            report.Render("Image", deviceInfo, AddressOf CreateStream, warnings)
            For Each stream As Stream In m_streams
                stream.Position = 0
            Next
        Catch
        End Try
    End Sub
 
    Private Sub PrintPage(ByVal sender As Object, ByVal ev As _
      PrintPageEventArgs)
        Dim pageImage As New Metafile(m_streams(m_currentPageIndex))
 
        Dim adjustedRect As New Rectangle(ev.PageBounds.Left - CInt( _
          ev.PageSettings.HardMarginX), _
                                          ev.PageBounds.Top - CInt( _
                                          ev.PageSettings.HardMarginY), _
                                          ev.PageBounds.Width, _
                                          ev.PageBounds.Height)
 
        ev.Graphics.FillRectangle(Brushes.White, adjustedRect)
 
        ev.Graphics.DrawImage(pageImage, adjustedRect)
 
        m_currentPageIndex += 1
        ev.HasMorePages = (m_currentPageIndex < m_streams.Count)
    End Sub
 
    Private Sub Print(ByVal zu_drucken As String)
        If m_streams Is Nothing OrElse m_streams.Count = 0 Then
            Throw New Exception("Error: no stream to print.")
        End If
        Dim printDoc As New PrintDocument()
        If Not printDoc.PrinterSettings.IsValid Then
            Throw New Exception("Error: cannot find the default printer.")
        Else
            AddHandler printDoc.PrintPage, AddressOf PrintPage
            m_currentPageIndex = 0
            Try
                printDoc.DefaultPageSettings.PrinterSettings.PrinterName = _
                  "Microsoft Office Document Image Writer"
                printDoc.DefaultPageSettings.PrinterSettings.PrintFileName = _
                "IQADiagnostics"
                printDoc.Print()
            Catch
            End Try
        End If
    End Sub
 
    Public Sub Dispose() Implements IDisposable.Dispose
        If m_streams IsNot Nothing Then
            For Each stream As Stream In m_streams
                stream.Close()
            Next
            m_streams = Nothing
        End If
    End Sub
 
    Public Shared Sub Formular_Drucken(ByVal reportname As String, ByVal _
      datatabelname As String, ByVal XML_Datei As String, ByVal zu_drucken As _
      String)
        Using schnelldruck As New cls_Schnelldruck()
            schnelldruck.Run(reportname, datatabelname, XML_Datei, zu_drucken)
        End Using
    End Sub
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Drucken ohne Druckvorschau4.340mrnr221.06.11 09:38
Re: Drucken ohne Druckvorschau3.994ModeratorFZelle21.06.11 09:43
Re: Drucken ohne Druckvorschau4.012mrnr221.06.11 12:08
Re: Drucken ohne Druckvorschau3.748ModeratorFZelle21.06.11 12:32
Re: Drucken ohne Druckvorschau3.760mrnr222.06.11 17:58
Re: Drucken ohne Druckvorschau3.691ModeratorFZelle22.06.11 21:33
Re: Drucken ohne Druckvorschau3.737mrnr223.06.11 11:22
Re: Drucken ohne Druckvorschau3.661ModeratorFZelle23.06.11 11:42
Re: Drucken ohne Druckvorschau3.700mrnr223.06.11 11:57
Re: Drucken ohne Druckvorschau3.888ModeratorFZelle23.06.11 13:50
Re: Drucken ohne Druckvorschau3.700mrnr223.06.11 14:12
Re: Drucken ohne Druckvorschau3.798ModeratorFZelle23.06.11 15:18

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel