我们有一个应用程序(用于建筑自动化的自定义网络管理工具),它支持打印标签,您可以剪切标签并将其插入设备的前显示屏。在该工具的早期版本中(不是我公司开发的),应用程序只是将字符串推送到一个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窗体无关。