如何自定义注释文件

时间:2009-09-15 12:33:34

标签: c# wpf annotations xps

我目前正处于项目的设计阶段,客户想要一个桌面应用程序,他们可以用来查看和注释“任何”类型的文档。我一直在研究WPF文档查看器和XPS文档,它看起来非常合适,因为使用XPS文档编写器,您可以将任何内容打印到xps文档中,并在WPF应用程序中轻松查看。我用几种不同的文档类型(PDF,网页,word文档等)对此进行了测试,结果令人印象深刻。我想远离Adobe PDF审阅工具,因为处理他们的API可能很困难,我想尽可能设计一个全MS解决方案。

XPS的另一个主要优点是我们可以使用WPF注释框架(System.Windows.Annotations),但我的问题是这个框架是一个良好的开端,但客户端将需要更丰富的功能,框架不会提供,如下所示:

  • 能够在文档的各个部分周围绘制矩形或椭圆
  • 能够在文档上绘图
  • 能够将粘滞便笺添加到图像或文档上的任何位置,而无需将其锚定到文本的特定部分
  • 在便利贴上显示评论的作者
  • 为每个
  • 显示不同颜色的便签
  • 一个按钮,它会将音符标记为高优先级或低优先级,并相应地更改颜色

感谢您提供任何建议。

- Mehar

2 个答案:

答案 0 :(得分:0)

您可以使用XPS文档和WPF完成上述所有要求。

您只需要创建一个离屏画布(用户看不到),加载现有的XPS文档。然后你可以只添加你需要的任何图形/ UI对象(矩形,圆形,位图效果,文本等),并且应该能够轻松地将控件渲染到现有的XPS文档之外。

你将获得WPF的完整渲染/ UI功能,以便在世界上绘制你需要的任何东西。

在画布上调用InvalidateArrange()和InvalidateMeasure()会有一些手动工作,但它应该相当简单。

我唯一的另一个建议是使用PDF,因为大多数普通平民习惯于那些或在你的应用程序中提供某种导入功能。如果你去pdf路线,你也可以查看PDFSharp的开源项目。

答案 1 :(得分:0)

嗯,这听起来很熟悉http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/8ed381ad-21b6-4479-b9b2-b6317591e93a

如果我是你,我将避免自定义WPF Annotation框架,因为我一直沿着这条路走下去,它在难度范围内很高,需要反思才能访问你需要的属性。如果有可能将此解决方案作为Web应用程序提供,那么我建议您查看First Floor软件的文档toolkit: firstfloorsoftware.com/documenttoolkit/

这是Silverlight中的XPS查看器/转换器/注释框架,完全在Web浏览器中运行。我不隶属于First Floor,但是如果这个框架(和silverlight 3)在一年前就已经可用了,那么我肯定会为它而努力。它并不便宜,但比WPF中的所有工作便宜得多。

如果您决定继续推行WPF路线,那么Derek Melhorn的博客上有一些有趣的内容:blogs.msdn.com/mehlhorn/default.aspx