【发布时间】:2013-03-13 15:32:16
【问题描述】:
我们有大量需要填写的纸质表格。手工做这个非常乏味,所以我们正在构建一个应用程序。它应该提供一个表格来填写数据,能够显示打印预览,在纸质表格上打印数据,并保留历史记录。
目前,我们有一个FixedPage,我们打印如下:
var dlg = new PrintDialog();
if (dlg.ShowDialog() == true)
{
var doc = new FixedDocument();
doc.DocumentPaginator.PageSize = new Size(11.69 * 96, 8.27 * 96); // A4 Landscape
var fp = Application.LoadComponent(new Uri("/FixedPage.xaml", UriKind.Relative)) as FixedPage;
fp.DataContext = this;
fp.UpdateLayout();
var pc = new PageContent();
((IAddChild)pc).AddChild(fp);
doc.Pages.Add(pc);
dlg.PrintTicket.PageOrientation = System.Printing.PageOrientation.Landscape;
dlg.PrintDocument(doc.DocumentPaginator, string.Format("Form #{0}", FormNumber));
}
对于打印预览,我们有一个自定义UserControl,背景是纸质表格的扫描图像,前景是数据。基本上,它是在重复FixedPage 布局,这一切都让我们认为我们的设计存在缺陷。
有没有更好的方法来做我们想做的事?
【问题讨论】:
-
我认为您可以从stackoverflow.com/questions/404010/… 中受益,我认为最好的方法是将其用于打印和预览。我自己从未使用过 PrintDialog。但是应该有打印来预览而不是纸张。它可能只是另一种设备或类似的东西。
-
@Dzyann,谢谢,它看起来不错!但是,我不太确定如何在预览中显示背景图像,而不将其打印在纸上。如果你提供一个样本,我很乐意接受它作为答案。
-
您用于布局的用户控件是否可能只包含一个 Canvas,背景是扫描的图像,在您直接使用 FixedPage.xmal 的 cambas 内部?
-
@Dzyann,它可能会,但这就是现在拥有的:两个控件,它们仅在图像上有所不同。我想避免这种情况,以及构建一个预览窗口(我想像 .NET 这样的框架必须准备好)。