2012-05-15 135 views
6

我正在嘗試換頁&打印時跳過1頁,但使用下面的代碼行,我無法進行換頁。c#印刷中的換頁

private void InserPageBreak(System.Drawing.Printing.PrintPageEventArgs e) 
{ 
     Font sFont = new Font("Arial", 10); 
     Brush sBrush = Brushes.White; 
     e.Graphics.DrawString("\f", sFont, sBrush, 0, 0); 
} 

我使用PrintDialog打印頁面內容。我使用「\ f」C#的換頁字符。

有關如何實現/使此表單饋送工作的任何想法?

PS:我甚至試過這樣:

// ASCII碼12 - 打印機的進紙控制代碼。

string test = char.ConvertFromUtf32(12); 
e.Graphics.DrawString(test, sFont, sBrush, 0, 0); 

內部C#轉換,爲「\ F」,但沒有做換,誰實施了「\ F」,請分享你的看法。

+0

只是出於好奇,你有沒有試過把刷子改成黑色? –

+0

不,我用黑色試過,沒有工作。 – Sharpeye500

+0

請參閱[PrintDocument.PrintPage事件](http://msdn.microsoft.com/zh-cn/library/system.drawing.printing.printdocument.printpage%28v=vs.100%29.aspx)用法?](http://bytes.com/topic/c-sharp/answers/274193-form-feed-usage)。 –

回答

5

在.NET中,應使用PrintPageEventArgs.HasMorePage屬性將換頁發送到打印機。通過調用e.Graphics.DrawString(「\ f」,sFont,sBrush,0,0),您只需將文本呈現給要打印的文檔,打印機將永遠不會將其解釋爲換頁。

由於您知道要在哪裏打破頁面,而不是調用InserPageBreak方法,請在PrintPage事件處理程序中設置PrintPageEventArgs.HasMorePages = true。這將向打印機發送換頁信息,並且您的PrintPage事件將繼續被觸發,直到您設置了HasMorePages = false。

我希望這會有所幫助。瞭解如何實現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處理程序之前初始化數據,一次打印單頁,並設置HasMorePages的指示是否有另一個頁面打印。在本例中,將打印三頁,每頁上一個字符串。在第三頁之後,_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(); 
    } 
+0

+1擊敗我約30秒。 –

+0

謝謝。我試圖設置PrintPageEventArgs.HasMorePages = true;它沒有進行換頁。 你有任何快速示例/示例顯示? – Sharpeye500

+1

我添加了一個簡短的示例。我在發佈之前對其進行了測試,並打印了3個獨立頁面。 – figabytes