问题描述
首先,我的程序有一个Frame
和多个Pages
。我将页面存储在List<UIElement>
中,并使用XPS编写器进行打印。
private void Print()
{
List<UIElement> Pages = new List<UIElement>();
PrintDialog print = new PrintDialog();
if (print.ShowDialog() == true)
{
PageOne one = new PageOne(); // add a few pages for example's sake
Pages.Add(one);
PageTwo two = new PageTwo();
Pages.Add(two);
var xpsDocWriter = PrintQueue.CreateXpsDocumentWriter(print.PrintQueue);
PrintUIElements(xpsDocWriter,Pages);
}
}
PrintUIElements
是写入XPS文档的内容:
private void PrintUIElements(XpsDocumentWriter xpsWriter,List<UIElement> uiElements)
{
var fixedDoc = new FixedDocument();
foreach (UIElement element in uiElements)
{
var fixedPage = new FixedPage();
var pageContent = new PageContent();
fixedPage.Children.Add(new Frame() { Content = element });
pageContent.Child = fixedPage;
fixedDoc.Pages.Add(pageContent);
}
xpsWriter.Write(fixedDoc);
}
fixedPage.Children.Add(new Frame() { Content = element });
之所以完成,是因为Pages
不能有一个FixedPage
父母,所以我只是将它们写为框架。
就像我说的那样,通过PrintDialog
打印到PDF效果很好,但是选择打印机会使它打印空白纸。有任何线索吗?
(已编辑,删除了不需要的帮助程序类)
print.PrintDocument(fixedDoc.DocumentPaginator,"Print")
在PrintUIElements
内部,同样的问题仍然发生。如果在“打印”之后在fixedDoc
内显示DocumentViewer
,则它包含页面的确切内容(应如此)。我还验证了打印机本身不是问题。发生什么事了?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)