If anyone is willing to look through all this code I've posted below, it
would be tremendously appreciated.

I can't seem to get the second (or 3rd, etc.) page to print on a new piece
of paper. For instance, I have 15 line items in an order. The header and
the 1st 12 lines print on page 1, then lines 13 thru 15 print on the same
piece of paper directly on top of lines 1 thru 4.

I've review the Microsoft examples, but they don't seem to apply exactly to
the structure of my document which is composed of a header and detail.

Thanks again in advance for any pointers.

Private Sub pd_Print(ByVal sender As Object, ByVal ev As PrintPageEventArgs)

Dim linesPerPage As Single = 1, yPos As Single = 1, count As Integer = 1

Dim AddrLen As Integer = 0, topMargin As Single = 10, leftMargin As Single =
10

Dim line As String = Nothing, detCntr As Integer = 0, header As String =
Nothing, document As String = Nothing

Dim SoldTo As String = Nothing, Status As String = Nothing, lineCNTR As
Integer = 0

Dim MultiplePages As Boolean = False

Try

fnName = "pd Print"

' Calculate the number of lines per page.

linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)

OHCSNO = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHCSNO.ToString

OHORNO = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHORNO.ToString

OHORGN = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHORGN.ToString

OHORGN = Microsoft.VisualBasic.Trim(OHORGN)

OHCSNM = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHCSNM.ToString

OHCAD1 = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHCAD1.ToString

OHCAD2 =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHCAD2.ToString)

OHBLCY =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHBLCY.ToString)

OHBLST =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHBLST.ToString)

OHBLZP =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHBLZP.ToString)

OHBLCT =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHBLCT.ToString)

OHSHNM =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSHNM.ToString)

OHSAD1 =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSAD1.ToString)

OHSAD2 =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSAD2.ToString)

OHSCTY =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSCTY.ToString)

OHSHST =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSHST.ToString)

OHSZIP =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSZIP.ToString)

OHCSPO = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHCSPO.ToString

OHSPIN = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSPIN.ToString

OHNOTE =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHNOTE.ToString)

OHWHID = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHWHID.ToString

OHSLS1 = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHSLS1.ToString

OHLUSR =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHLUSR.ToString)

OHETUS =
Microsoft.VisualBasic.Trim(Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHETUS.ToString)

OHCACD = Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OHCACD.ToString

DueDate =
Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).DueDate.ToString

OrderDate =
Me.DsPrintPipePickTicket1.spPrintPipePickTicket(0).OrderDate.ToString

'Get the order status.

Me.SpGetPipeOrderStatusTableAdapter1.Fill(Me.DsGetPipeOrderStatus1.spGetPipeOrderStatus,
OHORNO)

Status = Me.DsGetPipeOrderStatus1.spGetPipeOrderStatus(0).Status.ToString

Dim detCNT As Integer = Me.DsPickTicketDetail1.Tables(0).Rows.Count

Dim bCityStateZip As String = OHBLCY & ", " & OHBLST & " " & OHBLZP

Dim sCityStateZip As String = OHSCTY & ", " & OHSHST & " " & OHSZIP

Dim bLen As Integer = Microsoft.VisualBasic.Len(bCityStateZip)

Dim sLen As Integer = Microsoft.VisualBasic.Len(OHCAD1)

Dim sLen2 As Integer = Microsoft.VisualBasic.Len(OHCAD2)

Dim nLen As Integer = Microsoft.VisualBasic.Len(OHCSNM)

Dim ODORSQ As String = Nothing, ODITNO As String = Nothing, ItemDescription
As String = Nothing

Dim ODUNMS As String = Nothing, Qty As String = Nothing

Dim bLine As Integer = detCNT + 6

SoldTo = "SOLD TO" & Microsoft.VisualBasic.Space(40) & OHCSNO

Dim HDCol1Width As Integer = Microsoft.VisualBasic.Len(SoldTo)

If Status = "Reprint" Then

header = Microsoft.VisualBasic.Space(HDCol1Width - 8) & "***** REPRINT
*****"

Else

header = ""

End If

header = FormatDateTime(Today, DateFormat.ShortDate) &
Microsoft.VisualBasic.Space(10) & OHLUSR & vbCrLf

header = header & FormatDateTime(Now, DateFormat.LongTime) & vbCrLf

header = header & Microsoft.VisualBasic.Space(Col10) &
FormatDateTime(OrderDate, DateFormat.ShortDate) & vbCrLf

header = header & Microsoft.VisualBasic.Space(Col10) &
FormatDateTime(DueDate, DateFormat.ShortDate) & vbCrLf & vbCrLf

header = header & SoldTo & Microsoft.VisualBasic.Space(7) & "SHIP TO" &
vbCrLf

header = header & OHCSNM & Microsoft.VisualBasic.Space(HDCol1Width -
Microsoft.VisualBasic.Len(OHCSNM) + 7) & OHSHNM & vbCrLf

header = header & OHCAD1 & Microsoft.VisualBasic.Space(HDCol1Width -
Microsoft.VisualBasic.Len(OHCAD1) + 7) & OHSAD1 & vbCrLf

If OHCAD2 <> "" Then

header = header & OHCAD2 & Microsoft.VisualBasic.Space(HDCol1Width -
Microsoft.VisualBasic.Len(OHCAD2) + 7) & OHSAD2 & vbCrLf

End If

If OHCAD2 = "" And OHSAD2 <> "" Then

header = header & Microsoft.VisualBasic.Space(HDCol1Width) & OHSAD2 & vbCrLf

End If

header = header & bCityStateZip & Microsoft.VisualBasic.Space(HDCol1Width -
Microsoft.VisualBasic.Len(bCityStateZip) + 7) & sCityStateZip & vbCrLf &
vbCrLf & vbCrLf

header = header & "Customer PO. No."

header = header & Microsoft.VisualBasic.Space(9) & "Order No."

header = header & Microsoft.VisualBasic.Space(17) & "Ship Via"

header = header & Microsoft.VisualBasic.Space(34) & "Whse"

header = header & Microsoft.VisualBasic.Space(10) & "SLSPN" & vbCrLf

header = header & Microsoft.VisualBasic.StrDup(115, "_") & vbCrLf

header = header & OHCSPO

header = header & Microsoft.VisualBasic.Space(25 -
Microsoft.VisualBasic.Len(OHCSPO)) & OHORNO & "/" & OHORGN

header = header & Microsoft.VisualBasic.Space(19) & OHSPIN

header = header & Microsoft.VisualBasic.Space(43 -
Microsoft.VisualBasic.Len(OHSPIN)) & OHWHID

header = header & Microsoft.VisualBasic.Space(15 -
Microsoft.VisualBasic.Len(OHWHID)) & OHSLS1 & vbCrLf

header = header & Microsoft.VisualBasic.StrDup(115, "_") & vbCrLf & vbCrLf

header = header & Microsoft.VisualBasic.StrDup(Col10 - 7, " ") & "Order
Picked" & vbCrLf

header = header & "L. Item No. Description" &
Microsoft.VisualBasic.Space(53) & "UM" & Microsoft.VisualBasic.Space(5) &
"Qty" & Microsoft.VisualBasic.Space(5) & "Qty" & vbCrLf

header = header & Microsoft.VisualBasic.StrDup(115, "_") & vbCrLf & vbCrLf

AdditionalPages:

Do While detCntr < detCNT

If lineCNTR >= 24 And MultiplePages = False Then

MultiplePages = True

line = line & Microsoft.VisualBasic.StrDup(66, "_") & "(continued on next
page)" & Microsoft.VisualBasic.StrDup(66, "_") & vbCrLf

GoTo Print

End If

ODORSQ =
Microsoft.VisualBasic.Trim(Me.DsPickTicketDetail1.spPickTicketDetail(detCntr).ODORSQ.ToString)

ODITNO =
Microsoft.VisualBasic.Trim(Me.DsPickTicketDetail1.spPickTicketDetail(detCntr).ODITNO.ToString)

ODITNO = Microsoft.VisualBasic.LTrim(ODITNO)

ItemDescription =
Me.DsPickTicketDetail1.spPickTicketDetail(detCntr).ItemDescription.ToString

ItemDescription = Microsoft.VisualBasic.LTrim(ItemDescription)

ODUNMS = Me.DsPickTicketDetail1.spPickTicketDetail(detCntr).ODUNMS.ToString

Qty = Me.DsPickTicketDetail1.spPickTicketDetail(detCntr).Qty.ToString

If Microsoft.VisualBasic.Val(Qty) = 0 Then

Qty = ""

If Microsoft.VisualBasic.Len(ODORSQ) = 1 Then

line = line & ODORSQ & Microsoft.VisualBasic.Space(3)

End If

If Microsoft.VisualBasic.Len(ODORSQ) <> 1 Then

line = line & ODORSQ & Microsoft.VisualBasic.Space(2)

End If

line = line & ODITNO & Microsoft.VisualBasic.Space(24 -
Microsoft.VisualBasic.Len(ODITNO)) & ItemDescription &
Microsoft.VisualBasic.Space(20) & Microsoft.VisualBasic.StrDup(180 -
Microsoft.VisualBasic.Len(ODITNO & Microsoft.VisualBasic.Space(24 -
Microsoft.VisualBasic.Len(ODITNO)) & ItemDescription), "_") & vbCrLf &
vbCrLf & vbCrLf

Else

If Microsoft.VisualBasic.Len(ODORSQ) = 1 Then

line = line & ODORSQ & Microsoft.VisualBasic.Space(3)

End If

If Microsoft.VisualBasic.Len(ODORSQ) <> 1 Then

line = line & ODORSQ & Microsoft.VisualBasic.Space(2)

End If

line = line & ODITNO & Microsoft.VisualBasic.Space(24 -
Microsoft.VisualBasic.Len(ODITNO)) & ItemDescription

line = line & Microsoft.VisualBasic.Space(62 -
Microsoft.VisualBasic.Len(ItemDescription)) & ODUNMS &
Microsoft.VisualBasic.Space(4) &
Microsoft.VisualBasic.FormatNumber(Microsoft.VisualBasic.Val(Qty), 2,
TriState.UseDefault, TriState.UseDefault, TriState.UseDefault) &
Microsoft.VisualBasic.Space(10 - Microsoft.VisualBasic.Len(Qty)) & "______"
& " " & Microsoft.VisualBasic.StrDup(200 - 115, "_") & vbCrLf & vbCrLf &
vbCrLf

End If

lineCNTR = lineCNTR + 2

detCntr = detCntr + 1

Loop

MultiplePages = False

Print:

line = line & vbCrLf & vbCrLf

If Status = "Reprint" Then

line = line & Microsoft.VisualBasic.Space(HDCol1Width - 8) & "***** REPRINT
*****" & vbCrLf

End If

line = line & Microsoft.VisualBasic.StrDup(155, "_")

document = header & line


yPos = topMargin + count * printFont.GetHeight(ev.Graphics)

ev.Graphics.DrawString(document, printFont, Brushes.Black, leftMargin, yPos,
StringFormat.GenericTypographic) 'New StringFormat()

'If more lines exist, print another page.

If MultiplePages = True Then

ev.HasMorePages = True

line = Nothing

GoTo AdditionalPages

Else

detCntr = 0

ev.HasMorePages = False

End If

Catch ex As Exception

Dim Er As String = "pd Print: " & OrderNo & ": " & ex.Message

MsgBox(Er)

End Try

End Sub