そのため、VB.NET プログラムから直接印刷中に改ページを強制しようとしています。私は基本的に、MSDN の次のコードを使用してドキュメントを印刷しています。
Private Sub printDocument1_PrintPage(ByVal sender As Object, _
ByVal e As PrintPageEventArgs)
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
End Sub
これで問題なく印刷できますが、特定の場所に改ページを入れたいと考えています。e.HasMorePages = true を試してみましたが、特定の場所でブレークする方法がわかりません。私のstringToPrintの長さが5000文字で、1000文字の後に新しいページを開始し、次の2500文字の後に再びページを開始したいとします。どうすればいいですか?
また、linesOnPage と charactersOnPage を他の値に変更しても、何も変わらないようです。
編集:私のプログラムが何をするかについてもう少し情報が役立つと思います。基本的には、プログラムが約 4 ページ分のデータを作成し、それを .txt ファイルに出力します。ここで、.txt ファイル全体を印刷したいと思います。これを行う方法を知っている唯一の方法は、文字列を出力することです。そのため、.txt ファイル全体を 1 行ずつ読み取り、すべてを 1 つの文字列 (stringToPrint) として保存します。上記のコードを使用して、stringToPrint を出力します。