2

语境

我们需要的是从 WPF 应用程序中捕获一些用户输入(格式化的文本),并输出带有一些存储图像的 PDF 和最后一页上的用户输入。

我们尝试过的

我们创建 WPF 应用程序,添加 iTextSharp 库,从数据库中恢复图像并将其添加到 PDF。那行得通。现在,对于用户输入,我们从 Extended WPF Toolkit添加了一个RichTextBox控件。我们添加这个控件主要是因为它的绑定属性和格式化程序。基本上我们可以将控件的丰富内容绑定到一个属性上。该绑定正在工作。我们已经有了 RTF 格式,例如(例如):

"{\rtf1\ansi\ansicpg1252\uc1\htmautsp\deff2{\fonttbl{\f0\fcharset0 Times New Roman;}{\f2\fcharset0 Segoe UI;}}{\colortbl\red0\green0\blue0;\red255\green255\blue255;}\loch\hich\dbch\pard\plain\ltrpar\itap0{\lang1033\fs18\f2\cf0 \cf0\ql{\f2 {\ltrch This is the }{\b\ltrch RichTextBox}\li0\ri0\sa0\sb0\fi0\ql\par}}}"

问题

问题是,PDF 的实际输出正是之前显示的 RTF,但预期输出(例如)必须是:

"This is the **RichTextBox**\r\n"

这显然是因为我们从控件中插入绑定的 RTF,因为它涉及到 PDF,问题是:我们如何添加该内容并指定它的 RTF?

PS。如果您有其他可行的想法或解决方案(不使用richtextbox 或类似的东西),欢迎您。提前致谢。

4

2 回答 2

1

不幸的是,iTextSharp 不再直接支持 RTF 格式我建议先将 RTF 片段转换为 XHTML,然后将生成的 XHTML 导入最终文档(似乎官方的 HTML 支持已经消失,所以在这种情况下 XHTML 是唯一的选择)。

简而言之,我建议:

  1. 将 RTF 片段转换为 XHTML;
  2. 将 XHTML 流放入一个新的 iTextSharp 文档(或直接放入最终文档,如果您愿意);
  3. 将上述文档的内容添加到您要导出为 PDF 的目标文档中。

更新

没有将 RTF 转换为 XHTML 的内置机制,但存在许多开源项目;我将开始将此RTF 到 HTML转换器与HTML Agility Pack结合起来(这反过来会将您的 HTML 转换为 XHTML)。

然而,坦率地说,整个流程有点复杂,我可能会选择一个更简单的解决方案,可能是直接在您的项目中使用HTML 编辑器替代),或者按照其他人的建议恢复到 FlowDocument。

于 2012-07-01T11:11:27.340 回答
1

WPF 已经有一个很好的 FlowDocument 并且它的渲染效果很好。所以我们创建了 Xaml 到 PDF 转换器,它处于测试阶段,但大多数字符串、表格和图像都成功转换为 PDF,它是一个开源项目,可在http://xamltopdf.codeplex.com/获得,RTF 可以为您提供 FlowDocument 和您可以将其转换为 XAML 并将其传递给 XamlToPDF 转换器。

于 2012-07-01T11:49:30.113 回答