2010-05-11 47 views
0

我不得不在我們的應用程序中修改打印功能,以便不打印某些特定的頁面。我發現這並不需要大量修改的唯一方法就是回收頁面(我只知道在「打印」頁面後是否需要跳過該頁面,因此我將該頁面再次用於下一頁)。問題是當我需要回收的頁面是最後一個頁面時,我最終得到了一個我沒有用的空白頁面。我在那個時候做的巧妙的技巧是撥打CancelPrintEventArgs,這似乎只取消最後一頁。這是保證永遠是這種情況,否則我在某些特定情況下(例如:緩慢後臺處理程序)冒着取消比最後一頁更多的風險?我沒有任何其他的解決方法。我應該期望從PrintDocument調用`PrintEventArgs`上的`Cancel`?

回答

1

是的,這應該是一個問題。在PrintPage事件中將e.Cancel設置爲true會導致AbortDoc()被調用。從SDK文檔:

如果使用打印管理器來啓動打印作業,調用AbortDoc將擦除整個spool作業,以便打印機不收到任何內容。如果打印管理器未用於啓動打印作業,則數據可能已經發送到打印機。在這種情況下,打印機驅動程序會重置打印機(如果可能)並結束打印作業。

實際上並不確定「打印管理器」是什麼。請在superuser.com

+0

然後,這幾乎意味着沒有辦法取消一個頁面。 – 2010-05-11 18:00:34

+1

對。您已經承諾通過將HasMorePages設置爲true來實現另一個頁面。 PrintController承諾並稱之爲StartPage()。那艘船駛過。 – 2010-05-11 19:01:42

相關問題