XPS表格填写

时间:2009-03-26 19:35:38

标签: c# xps

有没有办法在C#中使用XPS文档填写表单?

5 个答案:

答案 0 :(得分:3)

这不是一个理想的解决方案。原因是XPS中的文本由Glyphs表示,其中字符(粗略地说)被指定为特定字体的字符形状表的索引,而不是像Unicode那样方便的东西。并且必须专门定位Glyphs,每个字符都偏离字符串原点。如果一个字符串必须包装到多行上,那么必须通过放入许多单独的Glyphs对象来完成,所有这些对象都是单独定位的。它不是一种逻辑格式,而是一种物理格式,并且在生成后不会被特别改变。

将模板文档定义为FlowDocument会更好。这是一种逻辑上可操作的格式,而不是物理上的“冻结”格式。 (XPS文档在技术上是FixedDocument)。然后,您可以将FlowDocument冻结为FixedDocument,以便在填写完成后将其导出为XPS。

Read more about Flow Documents.

答案 1 :(得分:2)

这是你如何做到的。

首先,您创建一个对象(PO​​CO很好),其中包含您希望用户填写表单的表单字段。接下来,您将表单创建为FixedDocument。它应该有绑定对你的POCO有效。然后创建一个设置的窗口,以便用户可以输入这些字段的值。

将POCO(普通旧CLR对象)绑定到Window中的TextBoxes。用户输入表单数据后,将您现在填写的对象设置为FixedDocument的DataContext。创建一个XpsWriter并将FixedDocument写入输出(文件,打印机等)。

我会给你代码,但因为我实际上正在做这个(或类似的东西)工作,我认为我不能。我可以告诉你,最困难的部分是处理XPS文档。你可以根据自己的经历来判断。

答案 2 :(得分:0)

如果您想填写XPS表单,。 XPS是XML,因此您可以更改它。

答案 3 :(得分:0)

修改XPS当然是可能的,它取决于你希望如何工作以及你愿意做的编程量(但这可能适用于每个编程问题; - ))。

无论如何:请随时通过info-at-nixps-dot-com给我发电子邮件。

答案 4 :(得分:0)

我从来没有找到一个非常好的解决方案,所以我做了一个。访问www.flexsoftinc.com查看我的XPS Express程序。