有没有办法在C#中用XPS文档填写表单?
发布于 2009-03-30 21:10:22
下面是你如何做到这一点。
首先,创建一个对象(POCO很好),其中包含希望用户为您的表单填写的表单字段。接下来,将表单创建为FixedDocument。它应该有对你的POCO起作用的绑定。然后创建一个设置好的窗口,以便用户可以为这些字段输入值。
将POCO (普通旧CLR对象)绑定到窗口中的TextBoxes。用户输入表单数据后,获取现在已填充的对象并将其设置为FixedDocument的DataContext。创建XpsWriter并将FixedDocument写入输出(文件、打印机等)。
我会给你代码,但由于我实际上是为了工作而这样做(或类似的事情),我想我不能。我可以告诉您,最困难的部分是处理XPS文档。你可以根据你在那里的经历来判断。
发布于 2009-03-26 19:47:13
这不是一个理想的解决方案。原因是XPS中的文本是由Glyphs表示的,在XPS中,字符(粗略地说)被指定为特定字体的字符形状表的索引,而不是像Unicode这样的方便的东西。并且Glyphs必须有特定的位置,每个字符都从字符串的原点偏移。如果字符串必须换行到多行上,则必须放入许多单独的Glyphs对象,这些对象都是单独定位的。它不是一种逻辑格式,而是一种物理格式,而且它在生成后不会特别容易被更改。
最好将模板文档定义为FlowDocument。这是一种逻辑上更易于操作的格式,而不是物理上的“冻结”格式。(从技术上讲,XPS文档是一个FixedDocument)。然后,您可以将FlowDocument冻结到FixedDocument中,以便在填充后将其导出为XPS。
Read more about Flow Documents.
发布于 2009-03-26 19:38:05
如果你想填写XPS表格,yes。XPS是XML,所以您可以更改它。
https://stackoverflow.com/questions/687248
复制相似问题