【发布时间】:2011-08-03 18:41:16
【问题描述】:
我正在尝试打印 RichTextBox 的内容,包括里面的装饰层。 我正在使用此代码进行打印
double w = Editor.ExtentWidth; // Editor is the RichTextBox
double h = Editor.ExtentHeight;
LocalPrintServer ps = new LocalPrintServer();
PrintQueue pq = ps.DefaultPrintQueue;
XpsDocumentWriter xpsdw = PrintQueue.CreateXpsDocumentWriter(pq);
PrintTicket pt = pq.UserPrintTicket;
if (xpsdw != null)
{
pt.PageOrientation = PageOrientation.Portrait;
PageMediaSize pageMediaSize = new PageMediaSize(w, h);
pt.PageMediaSize = pageMediaSize;
xpsdw.Write(Editor);
}
我面临的问题是这段代码只打印屏幕上可见的内容,而不是编辑器的全部内容。
编辑 图片是装饰层,如果我使用上面的方法打印,它只打印屏幕上的可见部分而不是整个文档。
编辑
我正在尝试单独打印每一页,但在执行Editor.PageDown(); 之后我无法强制Editor.InvalidateVisual(); 有没有办法在我的方法中做到这一点?
【问题讨论】:
-
你昨天不是才问这个吗?
-
@LarsTech 这涉及到一个不同的问题。
-
你试过调用 xpsdw.Write(Editor.Document) 吗?
-
@AresAvatar 是的,它给出了一个错误“无法从 'System.Windows.Documents.FlowDocument' 转换为 'string'”
-
是装饰者的问题,或者您没有获得由于滚动而看不到的内容。如果您需要打印在屏幕上阅读时必须滚动的“高”文档,那么您可能希望直接打印嵌入的流文档,而不是打印 RichTextBox。
标签: c# wpf printing richtextbox