C#在单词模板上插入图像不同的图像大小取决于办公版本



我有一个C#窗体。Net framework 4.0,我正在向单词模板(书签(添加一个图像。我面临的情况是,根据运行应用程序的机器上安装的Office版本,图像会以不同的大小呈现。在Word 2010上,它就像一个符咒,但在Word 365等最新版本上,图像较小。

我只是使用以下代码:

Word.Document doc = null;
string filePath = "C:myImage.png";
string base64bytes = "My image base64 string";
var bytes = Convert.FromBase64String(base64bytes);
using (MemoryStream ms = new MemoryStream(bytes))
{
using (System.Drawing.Image imgToResize = System.Drawing.Image.FromStream(ms))
{
using (Image finalImg = new Bitmap(imgToResize, new Size(150, 150)))
{
finalImg.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
}
}
}
document.Bookmarks["MyBookmarkName"].Range.InlineShapes.AddPicture(filePath, true, false);

我还能做什么吗?或者任何我可以确保图像保持相同大小的命令或东西?

经过一段时间的挖掘,发现这实际上是Office版本之间的不同行为。

必须检查office版本,并在此基础上,在渲染之前设置图像大小。

但有时,这种情况会发生,并不总是,也不总是在同一个文档上,但会发生:

System.Runtime.InteropServices.COMException (0x800A1066): Command failed
at Microsoft.Office.Interop.Word.Range.PasteSpecial(Object& IconIndex, Object& Link, Object& Placement, Object& DisplayAsIcon, Object& DataType, 
Object& IconFileName, Object& IconLabel)

代码:

string htmlTable = GetDataHtml(data, useGrouping);
HtmlFragment.CopyToClipboard(htmlTable);
object missing = Type.Missing;
object pasteHtml = Word.WdPasteDataType.wdPasteHTML;
view.Bookmarks[bookmarkName].Range.PasteSpecial(ref missing, ref missing, ref missing, ref missing, Word.WdPasteDataType.wdPasteHTML, ref missing, ref missing);

不要在这里看到任何奇怪的东西,如果它在装有Office 2010的机器上运行,它的工作原理就像一个魅力。有人遇到过这种情况吗?

最新更新