-
Jan 20th, 2019, 04:00 PM
#1
Thread Starter
New Member
Print Preview using a Text Document
So I have been trying to find a method where I can do a PrintPreview on a specific Text Document before Printing using PrintPreviewControl but all the methods I found were using TableAdpters and DataGridView which I should be using but am not. If anyone knows a way that I can do this please?
On my form I have a PrintDocument and PrintPreviewControl
My code is very limited for this as I extremely confused and stuck.
Here is my code:
Code:
Private Sub FrmStockPrint_Load(sender As Object, e As EventArgs) Handles MyBase.Load
PrintStockDetails.DefaultPageSettings.Landscape = True
PrintPreviewControl1.Document = PrintStock()
End Sub
Sub PrintStock()
End Sub
-
Jan 20th, 2019, 04:56 PM
#2
Re: Print Preview using a Text Document
Table adapters and grids are irrelevant to printing. They are just a way to get the data to print. Once you have the data, printing it is done the same way regardless of where it came from, i.e. you call Print oh a PrintDocument, handle it's PrintPage event and then draw whatever you want printed using GDI+. You need to do just that to print text from a text for our anything else.
-
Jan 20th, 2019, 05:05 PM
#3
Thread Starter
New Member
Re: Print Preview using a Text Document
Oh ok so I have to actually design the Preview? So do you know a way how I can collect the data from the text document to do this please?
-
Jan 20th, 2019, 05:13 PM
#4
Re: Print Preview using a Text Document
It's a text file. How do you usually read data from a text file? If you don't know, look it up. That's a very common task and thus easy to find information about. In fact, there's likely information out there specifically about printing text files. Depending on the size, i.e. if it might go over multiple pages, you will likely have to do some maths to determine where to put the page breaks.
-
Jan 20th, 2019, 05:16 PM
#5
Thread Starter
New Member
Re: Print Preview using a Text Document
Oh ok, Thanks. Yes i've been able to find information about printing text files just not Print Previewing.
-
Jan 20th, 2019, 07:15 PM
#6
Re: Print Preview using a Text Document
It's the same thing. The PrintDocument draws using a Graphics object in its PrintPage event handler. That Graphics object is just created in a different way for a real print and a preview.
-
Jan 22nd, 2019, 08:36 AM
#7
Re: Print Preview using a Text Document
Its your lucky day here is an example.
Just call the preview dialog. The printout drawing is produced on the dialog preview screen. Click ok button on dialog and the same code is used to print the drawing on the printer paper.
There are many ways to do it. This example shows basic printing in columns by using a monotype font. Also printing with word wrap. And finally printing multiple pages.
The example makes the controls just cut and paste into an empty form.
Code:
Imports System.Drawing.Printing
Public Class PrintTextBasicExample
Private WithEvents Button1 As New Button With {.Parent = Me, .Text = "Print...", .Location = New Point(100, 100)}
Private WithEvents PrintDocument1 As New PrintDocument
Private WithEvents PrintPreviewDialog1 As New PrintPreviewDialog
Private MasterData, PrintString As String
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load
Text = "Basic Text Printing"
'make the column text data
MasterData = "Item Description Quantity Unit Price Amount" & vbLf &
"_________________________________________________________________" & vbLf & vbLf
For i As Integer = 1000 To 1040
MasterData += i.ToString &
" 24 in RCP 2200 30 66000" & vbLf & vbLf
Next
'make the Word "Wrap text data
MasterData += vbLf & vbLf
For i As Integer = 1000 To 1040
MasterData += "This is word wrap data for the printing example and contains mostly sentences."
If i = 1010 Or i = 1020 Then MasterData += vbLf & vbLf
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
PrintString = MasterData
PrintPreviewDialog1.Document = PrintDocument1
PrintPreviewDialog1.ShowDialog()
Catch ex As Exception
MsgBox("Printing Problem" & Chr(13) & ex.Message, MsgBoxStyle.Exclamation)
End Try
End Sub
Private Sub PrintPage(sender As Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
'draw the margins
Dim rect As Rectangle = e.MarginBounds
rect.Inflate(50, 50)
e.Graphics.DrawRectangle(Pens.Black, rect)
Dim charactersOnPage, linesPerPage As Integer
Using f As Font = New Font("Consolas", 12)
' Sets the value of charactersOnPage to the number of characters
' of stringToPrint that will fit within the bounds of the page.
e.Graphics.MeasureString(PrintString, f, e.MarginBounds.Size, StringFormat.GenericTypographic, charactersOnPage, linesPerPage)
' Draws the string within the bounds of the page
e.Graphics.DrawString(PrintString, f, Brushes.Black, e.MarginBounds, StringFormat.GenericTypographic)
End Using
' Remove the portion of the string that has been printed.
PrintString = PrintString.Substring(charactersOnPage)
' Check to see if more pages are to be printed.
e.HasMorePages = PrintString.Length > 0
'reload string for actual printing after preview
If Not e.HasMorePages Then PrintString = MasterData
End Sub
End Class
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|