如何在一个打印作业中组合多个PrintVisual()?

时间:2017-07-03 12:43:29

标签: c# wpf printing

我有一个需要打印多个Page对象的C# WPF应用程序(.NET 4.6)。
每个页面在XAML编辑器中设置为恰好1页A4大小,内容由页面上的许多标签,边框和图像组件构成。
我在我的Page类中添加了一个方法,它在运行时向页面添加一些动态数据,然后使用PrintVisual()打印它。
实际上:它是一个用动态内容填充Page对象的循环,然后调用PrintVisual()来打印它。对于每次迭代,都会在页面中放置一些新内容。 (参见示例代码。)

// Print method of the Page object.
public void PrintIt(int totalpages)
{
     PrintDialog pDialog = new PrintDialog();
     // If not cancelled then print 
     if (pDialog.ShowDialog() == false) return;  // User cancelled. Don't bother
     for(int pagenum=1; i<=totalpages; i++)
     {
         // Omitted several dozen statements that fill/update the content of various 
         // label components based on the pagenumber.
         this.UpdateLayout();     // Required to re-render new page properly before printing.
         pDialog.PrintVisual(this, "My PrintJob");
     }
}

这很有效,期望每个PrintVisual()创建一个单独的打印作业,这使得无法双面打印(当打印到PDF时,每个页面最终都会以新文件结尾)。

我需要将所有页面(PrintVisual()调用)绑定在一个打印作业中。我非常确定我需要使用PrintDocument(),但我似乎无法弄清楚如何构建所需的FlowDocument并用我的实际打印填充它。

我对WPF编程很陌生,所以我可能会遗漏一些明显的东西,但据我所知,没有任何简单的方法可以做到这一点。 /> 任何人都可以给我一个正确的方向吗?

0 个答案:

没有答案