以编程方式将图像添加到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