【问题标题】:Print what you see in richtextbox - C# [duplicate]打印您在richtextbox 中看到的内容-C# [重复]
【发布时间】:2021-09-26 04:16:34
【问题描述】:

我正在处理 C# windows 窗体。 我只需要打印预览我在richtextbox 中看到的内容,就像我们在打印之前预览word 文档一样。 Richtextbox 包含格式化的字母和图像。 我试图完成这项工作,但无法通过。我认为问题出在下面的代码行。

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawString(richTextBox1.Text, new Font(richTextBox1.Font.ToString(), richTextBox1.Font.Size), System.Drawing.Brushes.Black, 66, 50);
}

有人可以帮忙吗? 提前谢谢你。

【问题讨论】:

  • 有了这个,你只是在输出中绘制简单的字符串。要使用richtextbox 中的所有样式打印它,您需要创建自己的代码,该代码将从richtextbox 获取文本和样式,然后根据每个部分的样式绘制字符串。

标签: c# richtextbox


【解决方案1】:

不,不仅仅是那一行。您可以按照评论中的建议滚动您自己的 RichTextBox 衍生。如果你只是想要一个类似“打印预览”的功能,一个相对简单的方法是将 RTF 格式从 RichTextBox 转换为 html,然后使用 .NET WebBrowser 组件来显示它。

  1. 使用 NuGet 包管理器获取并安装 RtfPipe 包。该库将知道如何将 RTF 转换为 HTML。
  2. 在表单上有一个名为richTextBox1 的RichTextBox 和一个名为webBrowser1 的WebBrowser。

然后你可以这样做:

private void ShowHtml()
{
    string html = RtfPipe.Rtf.ToHtml(richTextBox1.Rtf);
    webBrowser1.DocumentText = html;
}

还没有尝试过使用图像,但它确实可以处理文本格式。

【讨论】:

  • 会试试这个。谢谢。
猜你喜欢
  • 1970-01-01
  • 2018-12-01
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
  • 2020-01-24
相关资源
最近更新 更多