我们有大量需要填写的纸质表格。手工做这个非常乏味,所以我们正在构建一个应用程序。它应该提供一个表格来填写数据,能够显示打印预览,在纸质表格上打印数据,并保留历史记录。
目前,我们有一个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
布局,这一切都让我们认为我们的设计存在缺陷。
有没有更好的方法来做我们想做的事?