這可能是由許多不同的事情造成的。有跡象表明,你可以添加,當正確執行,可能cause the flying men to return with goods and knowledge.
首先,你應該擴展到打印頁面幾步(代碼a2zdotnet):
System.Printing.PrintCapabilities capabilities =
printDlg.PrintQueue.GetPrintCapabilities(printDlg.PrintTicket);
//get scale of the print wrt to screen of WPF visual
double scale = Math.Min(capabilities.PageImageableArea.ExtentWidth/this.ActualWidth, capabilities.PageImageableArea.ExtentHeight/
this.ActualHeight);
//Transform the Visual to scale
this.LayoutTransform = new ScaleTransform(scale, scale);
//get the size of the printer page
Size sz = new Size(capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight);
//update the layout of the visual to the printer page size.
this.Measure(sz);
this.Arrange(new Rect(new Point(capabilities.PageImageableArea.OriginWidth, capabilities.PageImageableArea.OriginHeight), sz));
//now print the visual to printer to fit on the one page.
printDlg.PrintVisual(this, "Code ganked from http://www.a2zdotnet.com/View.aspx?id=66");
貨物邪教代碼是度量和安排步驟。通常,如果您打電話給Measure並通過new Size(Double.MaxValue, Double.MaxValue)
這就是您所需要做的。
第二種儀式涉及碰撞分派器。
visual.DataContext = foo;
Dispatcher.Invoke((Action)()=>{;}); // bamp
// print here
試試看看是否有幫助。
的伎倆,你試過簡化PrintInvoice,看看他們是被導致與惠普打印機問題的任何元素? – RQDQ 2011-01-25 14:17:00
PrintInvoice是一個頁面,它在Microsoft XPS Document Writer中的輸出是完美的。 – 2011-01-25 14:28:49