以编程方式将图像添加到RTF文档

我正在尝试将图像添加到正在创建的RTF文档中。我宁愿不使用清除剪贴板的“复制/粘贴”方法(涉及将图像粘贴到RichTextBox中,然后访问.RTF属性)(因为这对我的最终用户来说是一个麻烦和困惑)。

到目前为止,我拥有的代码返回需要插入RTF文档以打印图像的字符串。输入的图像(位于$

path处)通常为bmp或jpeg格式,但是在此阶段,我并不关心如何在RTF中存储图像,只是我可以使它工作。

public string GetImage(string path, int width, int height)

{

MemoryStream stream = new MemoryStream();

string newPath = Path.Combine(Environment.CurrentDirectory, path);

Image img = Image.FromFile(newPath);

img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);

byte [] bytes = stream.ToArray();

string str = BitConverter.ToString(bytes, 0).Replace("-", string.Empty);

//string str = System.Text.Encoding.UTF8.GetString(bytes);

string mpic = @"{\pict\pngblip\picw" +

img.Width.ToString() + @"\pich" + img.Height.ToString() +

@"\picwgoa" + width.ToString() + @"\pichgoa" + height.ToString() +

@"\hex " + str + "}";

return mpic

}

但是问题在于该代码无法正常工作,因为据我所知,字符串str没有正确的字符串转换以在RTF中工作。

编辑:我的问题是在@“ \ hex”中的\ hex之后缺少空格,并且也没有从BitConverter的返回值中删除“-”字符

回答:

试试这些链接

  • 富文本格式(RTF)规范,版本1.6
  • 如何将图像插入RichTextBox?
  • 将图片插入rtf文件

您必须将“ picwgoa”更改为“ picwgoal”,将“ pichgoa”更改为“ pichgoal”

string mpic = @"{\pict\pngblip\picw" + 

img.Width.ToString() + @"\pich" + img.Height.ToString() +

@"\picwgoal" + width.ToString() + @"\pichgoal" + height.ToString() +

@"\bin " + str + "}";

在这里,您可以获得支持的图像格式的列表

\ emfblip图片的来源是EMF(增强型图元文件)。

\ pngblip图片的来源是PNG。

\ jpegblip图片的来源是JPEG。

\ shppict指定Word 97-2000图片。这是目标控制字。

\ nonshppict指定Word 97-2000已写入{\ pict目标,它将在输入时不会读取。此关键字是为了与其他读者兼容。

\ macpict图片的来源是QuickDraw。

\ pmmetafileN图片的来源是OS / 2图元文件。N参数标识图元文件类型。下表\ pmmetafile表中描述了N个值。

\ wmetafileN图片的来源是Windows图元文件。N参数标识图元文件类型(默认为1)。

\ dibitmapN图片的来源是Windows设备无关的位图。N参数标识位图类型(必须等于0)。要从Windows设备独立位图包含在RTF中的信息是BITMAPINFO结构的连接,后跟实际的像素数据。

\ wbitmapN图片的来源是Windows设备相关的位图。N参数标识位图类型(必须等于0)。Windows设备相关位图包含在RTF中的信息是GetBitmapBits函数的结果。

以上是 以编程方式将图像添加到RTF文档 的全部内容, 来源链接: utcz.com/qa/424695.html

回到顶部