2013-10-07 49 views
0

我正在使用此RTF Writer library来生成一个RTF文档。它允许我添加图像,表格和文本以满足我的大部分要求。.Net RTF Writer:如何添加预格式化的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作家添加文字,我们可以做到以下几点:

var par = doc.addParagraph(); 
par.setText("Here is some text"); 

有什么我可以改变它来允许添加预格式化的RTF文本?


端注:如果这是不可能的,我愿意接受建议到备用库(免费用于商业用途),让我做什么,我需要。很明显,对于这些建议更适合作为评论而不是回答。

+0

这不是微妙的RTF,它设置默认代码页,默认语言,并设置一个字体表。这对RTF其余部分的显示方式有很大的影响。任何“RTF编写器”已经这样做,因此添加它不是必需的。 –

+0

@HansPassant:我实际上是从RichTextBox中获得的,我确信我可以将其修剪到仅仅是内容上,但它能够将其添加到我的文档中看起来不太好。我想我可以使用某种占位符,并在文件创建后手动写入它们 - 但是更麻烦,然后我想 – musefan

+0

听起来不像你关心实际的格式。只要做'平等。setText(richTextBox1.Text);' – LarsTech

回答

1

看来,这是不可能的使用RTF作家库。它似乎不支持加载,解析或合并其他RTF数据。


对于它的价值,我的要求已经改变,所以我不再需要这样做。但是,我正在制作自己的RTF解析器和合并工具。由于RTF格式处理样式,合并RTF并不像复制/粘贴那么简单。诸如字体和颜色之类的样式在头表中定义,这使得合并更加复杂。

任何想自己尝试的人都可能会发现一些有用的信息:Here,herehere

0

您可以创建一个新的richtextbox,将其复制并粘贴到已存在的文档中,然后是预格式化文本。

+0

我真的试过了,库创建的RTF没有很好地进入RichTextBox,失去了图像和表格格式。我唯一的办法就是用RichTxtBox创建主文档,但是试图直接在RTB中生成表格和图像被证明是有点尴尬,特别是对于特定的格式 – musefan

0

还有一种替代方法:使用PD4ML.NET生成HTML(和CSS,如果需要)并将其转换为RTF。 HTML代码应该比RTF标记更容易混淆。

一个好主意是创建一个HTML模板(带有徽标,页脚等)并使用动态数据从代码中填充它。在这种情况下,您可以避免编写整个文档布局,并且还可以使布局调整更加简单。