.NETでは、PrintPageEventArgs.HasMorePageプロパティを使用して、フォームフィードをプリンターに送信する必要があります。e.Graphics.DrawString( "\ f"、sFont、sBrush、0、0)を呼び出すことにより、印刷するドキュメントにテキストをレンダリングするだけで、プリンターによってフォームフィードとして解釈されることはありません。
ページを分割する場所がわかっているので、InserPageBreakメソッドを呼び出す代わりに、PrintPageイベントハンドラー内でPrintPageEventArgs.HasMorePages=trueを設定します。これにより、フォームフィードがプリンターに送信され、HasMorePages = falseを設定するまで、PrintPageイベントが引き続き発生します。
これがお役に立てば幸いです。PrintPageイベントハンドラーをどのように実装したかを確認すると役立つ場合があります。
例:
印刷する前にBeginPrintハンドラーを使用してデータを初期化します
void _document_BeginPrint(object sender, PrintEventArgs e)
{
//generate some dummy strings to print
_pageData = new List<string>()
{
"Page 1 Data",
"Page 2 Data",
"Page 3 Data",
};
// get enumerator for dummy strings
_pageEnumerator = _pageData.GetEnumerator();
//position to first string to print (i.e. first page)
_pageEnumerator.MoveNext();
}
PrintPageハンドラーで、一度に1ページを印刷し、HasMorePagesを設定して、印刷する別のページがあるかどうかを示します。この例では、3ページが印刷され、各ページに1つの文字列が印刷されます。3ページ目以降、_pageEnumerator.MoveNext()はfalseを返し、印刷ジョブを終了します。
void _document_PrintPage(object sender, PrintPageEventArgs e)
{
Font sFont = new Font("Arial", 10);
Brush sBrush = Brushes.Black;
//print current page
e.Graphics.DrawString(_pageEnumerator.Current, sFont, sBrush, 10, 10);
// advance enumerator to determine if we have more pages.
e.HasMorePages = _pageEnumerator.MoveNext();
}