我正在使用此RTF Writer library生成RTF文档。它允许我添加图像,表格和文本以满足我的大部分要求。
但是,我还想添加一些已经是RTF格式的文本。需要在保持格式化的同时添加此测试,这意味着我不想在添加之前将其转换为纯文本。
目前,格式化的RTF包含所有文档信息,但我可以使用RichTextBox删除该部分,以确保仅保留文档的相关部分。这是我想要添加到生成的文档中的部分。
以下是预格式化RTF文本的示例:
{\rtf1\ansi\ansicpg1252\deff0\deflang2057{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}
\uc1\pard\f0\fs17 here is some RTF}
通常,当我们使用.Net RTF Writer添加文本时,我们可以执行以下操作:
var par = doc.addParagraph();
par.setText("Here is some text");
我可以做些什么来改变它以允许添加预先格式化的RTF文本吗?
附注:如果无法做到这一点,我愿意接受替代库(免费用于商业用途)的建议,这将允许我做我需要的事情。显然,对这些建议的任何建议都更适合作为评论而不是答案。
答案 0 :(得分:1)
使用RTF Writer Library似乎无法做到这一点。它似乎不支持加载,解析或合并其他RTF数据。
对于它的价值,我的要求已经改变,所以我不再需要这样做了。但是,我即将制作自己的RTF解析器和合并工具。由于RTF格式处理样式的方式,合并RTF并不像复制/粘贴那么简单。标题表中定义了字体和颜色等样式,这使得合并变得更加复杂。
答案 1 :(得分:0)
您可以创建一个新的richtextbox,将现有文档复制并粘贴到其中,然后是预先格式化的文本。
答案 2 :(得分:0)
还有另一种方法:生成HTML(和CSS,如果需要)并使用PD4ML.NET将其转换为RTF。 HTML代码应该比RTF标记更容易混淆。
一个好主意是创建一个HTML模板(带有徽标,页脚等),并使用动态数据从代码中填充它。如果您不需要编写整个文档布局,它也可以使布局调整更加简单。