代码之家  ›  专栏  ›  技术社区  ›  OregonGhost

编辑和呈现richtext

  •  0
  • OregonGhost  · 技术社区  · 15 年前

    我们有一个应用程序(用于建筑自动化的自定义网络管理工具),它支持打印标签,您可以剪切标签并将其插入设备的前显示屏。在该工具的早期版本中(不是我公司开发的),应用程序只是将字符串推送到一个Excel文件中,然后现场技术人员就可以操作该文件(比如格式化文本)。我们在新版本中没有这样做,因为很难(不可能)保持Excel文件同步,并且避免绑定到外部应用程序(更不用说Excel的不同版本)。

    我们正在使用 PDFSharp 用于呈现标签。它有一个类似System.Drawing的界面,但可以输出到System.Drawing.Graphics(屏幕/打印机)以及PDF文件,这是一项要求。

    后来,我们引入了基本格式,如字体系列、样式、大小、颜色,这些格式将应用于一个标签(即仅一个字符串)。现在,客户希望能够将这些格式应用于字符串中的单个字符。我认为最简单的方法是支持richtext的子集。这可不像我想的那么容易。

    当前,编辑器只显示要编辑的标签的文本框,字体设置为标签的字体。我想我只需要用richtextbox替换它,并更新格式化按钮以使用richtextbox格式化属性。相当容易。但是,我需要绘制文本。我知道你可以让richtextbox绘制到hdc或者system.drawing.graphics上,但是正如前面所说,我需要它来使用pdfshap。渲染位图不是一个选项,因为PDF不能太大,而且有很多标签。不幸的是,我无法让richtextbox告诉我文本的布局-只要我知道在哪里绘制内容,我就可以手工进行实际的渲染。这是第一个问题: 如何从richtextbox中获取格式文本的正确布局度量?或者有什么方法可以将富文本转换为矢量图形格式 可以很容易地手动绘制 ?

    我知道 NRTFTree 它可以用来解析和操作richtext。文档不好(实际上我不知道,它是西班牙语),但我想我可以让它工作。据我所知,它也不会提供布局。因此,我认为我必须编写一个自定义的编辑控件(记住,它基本上只是一个或两个带有基本RTF格式的行标签,而不是一个完整的编辑控件——更像是在PowerPoint中编辑文本框),并编写自定义的文本布局逻辑,使用pdfshap而不是system.drawing进行绘图。 是否有任何现有的解决方案(即使是部分解决方案)可用于编辑或手动进行布局(或两者都可)?

    或者有一个完全不同的方法我只是没有看到?如果将标签文本作为rtf导出到csv文件中,然后在Excel中导入,则会保留格式设置,则会获得额外奖励。

    对于编辑部分,我需要它在Windows窗体中工作。除此之外,我认为它与Windows窗体无关。

    1 回复  |  直到 15 年前
        1
  •  1
  •   I liked the old Stack Overflow    15 年前

    或者有一个完全不同的方法我只是没有看到?

    要从剪贴板导入RTF,我们使用隐藏的RichEntryField,将整个文本粘贴到其中,选择第一个字符并查询我们支持的格式(字体、大小、粗体、斜体、下划线等),选择第二个字符并查询格式…

    这不是您正在寻找的简单解决方案,但您不必自己分析RTF。