Visual Basic.NET - PrintPreviewControl

 
Vista:

PrintPreviewControl

Publicado por Josep (11 intervenciones) el 26/04/2017 11:26:39
Buenos dias.
Intentaré explicar mi duda:
Tengo en un formulario un PrintPreviewControl. En el codigo le indico una pagina para previsualizar antes de imprimir. Al ejecutar me sale el boton donde me dice Ver previsualizacion, le doy click y me sale una pantalla donde me informa que "el documento no contiene ninguna página". El archivo que quiero ver se llama test.txt y la ruta es correcta. ¿Puedo ver páginas con cualquier extension?

Muestro mi código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Imports System
Imports System.Drawing
Imports System.IO
Imports System.Drawing.Printing
Imports System.Windows.Forms
 
Public Class impressio
 
    Inherits Form
 
    Private WithEvents printPreviewButton As Button
 
    Private printPreviewDialog1 As New PrintPreviewDialog()
    Private WithEvents printDocument As New PrintDocument()
 
    ' Declare a string to hold the entire document contents.
    Private documentContents As String
 
    ' Declare a variable to hold the portion of the document that
    ' is not printed.
    Private stringToPrint As String
 
    Public Sub New()
        Me.printPreviewButton = New System.Windows.Forms.Button()
        Me.printPreviewButton.Location = New System.Drawing.Point(12, 12)
        Me.printPreviewButton.Size = New System.Drawing.Size(125, 23)
        Me.printPreviewButton.Text = "Vista previa d'impressio"
        Me.ClientSize = New System.Drawing.Size(292, 266)
        Me.Controls.Add(Me.printPreviewButton)
 
    End Sub
 
    Private Sub ReadDocument()
        Dim docName As String = "test.txt"
        Dim docPath As String = "C:\Users\Josep\Documents\"
        printDocument.DocumentName = docName
        Dim stream As New FileStream(docPath + docName, FileMode.Open)
        Try
            Dim reader As New StreamReader(stream)
            Try
                documentContents = reader.ReadToEnd()
            Finally
                reader.Dispose()
            End Try
        Finally
            stream.Dispose()
        End Try
        stringToPrint = documentContents
 
    End Sub
 
    Sub printDocument1_PrintPage(ByVal sender As Object, _
        ByVal e As PrintPageEventArgs) Handles PrintDocument1.PrintPage
 
        Dim charactersOnPage As Integer = 0
        Dim linesPerPage As Integer = 0
 
        ' Sets the value of charactersOnPage to the number of characters 
        ' of stringToPrint that will fit within the bounds of the page.
        e.Graphics.MeasureString(stringToPrint, Me.Font, e.MarginBounds.Size, _
            StringFormat.GenericTypographic, charactersOnPage, linesPerPage)
 
        ' Draws the string within the bounds of the page.
        e.Graphics.DrawString(stringToPrint, Me.Font, Brushes.Black, _
            e.MarginBounds, StringFormat.GenericTypographic)
 
        ' Remove the portion of the string that has been printed.
        stringToPrint = stringToPrint.Substring(charactersOnPage)
 
        ' Check to see if more pages are to be printed.
        e.HasMorePages = stringToPrint.Length > 0
 
        ' If there are no more pages, reset the string to be printed.
        If Not e.HasMorePages Then
            stringToPrint = documentContents
        End If
 
    End Sub
 
    Private Sub printPreviewButton_Click(ByVal sender As Object, _
        ByVal e As EventArgs) Handles printPreviewButton.Click
 
        ReadDocument()
        printPreviewDialog1.Document = printDocument1
        printPreviewDialog1.ShowDialog()
    End Sub
 
    <STAThread()> _
    Shared Sub Main()
        Application.EnableVisualStyles()
        Application.SetCompatibleTextRenderingDefault(False)
        Application.Run(New Form())
 
    End Sub
 
End Class
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

PrintPreviewControl

Publicado por Luis Aranda (2 intervenciones) el 05/10/2017 18:12:57
Hola, si de alguna manera pudiste resolver tu problema te agradeceria dijeras como lograste hacerlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

PrintPreviewControl

Publicado por Josep (11 intervenciones) el 05/10/2017 18:22:08
Buenas, no logre hacerlo. Deje el marron a mi compañero mientras yo estaba de vacaciones. Me maldijo todos mis huesos y al final decidio hacerlo con un programa createreport o algo así. Como era un programa de gestión interna nos vamos apañando con eso. Si hubiese sido para un cliente externo hubieramos hecho algo mas acurado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PrintPreviewControl

Publicado por LUIS ROBERTO (2 intervenciones) el 10/10/2017 23:49:13
De igual manera agradezco la atención prestada, he estado batallando tratando de encontrar la manera de visualizar una vista preliminar de impresión, con VB .net pero hasta el momento nada me ha dado resultado, buscare la manera de hacerlo, y si logro la solución con gusto la compartire.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar