iTextSharp - 如何在ClipBoard中生成RTF文档而不是文件

时间:2009-09-25 19:07:22

标签: c# .net clipboard itextsharp rtf

我想使用iTextSharp库生成PDF或RTF文档,可以使用我用来在文件(FileStream)上生成文档的相同代码将其复制到剪贴板。

这样我的应用程序就可以为用户提供两个选项:生成文件或剪贴板。

1 个答案:

答案 0 :(得分:0)

基本上每个iTextSharp文档都附加到System.IO.Stream

Document doc = new Document(PageSize.A4);
RtfWriter2.GetInstance(doc, stream);

通常我们使用FileStream将文档保存到文件中。要使用相同的代码将文档粘贴到剪贴板中,我们使用MemoryStream代替。

MemoryStream stream = new MemoryStream();
Document doc = new Document(PageSize.A4);
RtfWriter2.GetInstance(doc, stream);

// (...) document content

doc.Close();

string rtfText = ASCIIEncoding.ASCII.GetString(stream.GetBuffer());
stream.Close();

Clipboard.SetText(rtfText, TextDataFormat.Rtf);

我只遇到图像问题:似乎iTextSharp导出的图像会在\bin标记之后保存图像的字节。有些库将二进制内容编码为十六进制字符。当我在Word中粘贴(从内存),图像将不会出现,但如果我从文件加载,一切都OK。有什么建议吗?