【问题标题】:VSTO, change size of all pictures in word document to fit page widthVSTO,更改word文档中所有图片的大小以适应页面宽度
【发布时间】:2019-11-10 01:19:15
【问题描述】:

我正在尝试创建一个 Outlook 插件,它将获取当前打开的电子邮件的内容,并将其保存为 Word 文档。在保存之前,它应该调整图片、表格等的大小以适应页面宽度。

我正在努力调整大小。

将电子邮件的内容作为 word 文档对象提取后...

var ispector = e.Control.Context as Inspector;
var mailItem = ispector.CurrentItem as MailItem;
var document = ispector.WordEditor as Microsoft.Office.Interop.Word.Document;

... 并获取可用宽度

float availableWidth = document.PageSetup.PageWidth - document.PageSetup.LeftMargin - document.PageSetup.RightMargin;

...我正在遍历形状、内联形状和表格来调整宽度。

foreach (InlineShape item in document.InlineShapes)
{
   if (item.Width > availableWidth)
      item.Width = availableWidth;
}

foreach (Microsoft.Office.Interop.Word.Table table in document.Tables)
{
   table.AllowAutoFit = true;
   table.AutoFitBehavior(Microsoft.Office.Interop.Word.WdAutoFitBehavior.wdAutoFitContent);
}

但是无论我做什么,保存的文档中的图片都没有调整大小。

我什至尝试在每个形状/内联形状上调用 Delete 方法,但保存的文档中仍然没有任何变化。

有什么想法吗?

【问题讨论】:

  • 我对 Outlook 部分不是很熟悉,只是 Word 对象模型,但是......我阅读代码的方式,它仍然在电子邮件中工作,而不是独立的 Word 文档?首先将其保存为单独的文件,然后使用其中的图形是否有帮助?
  • 我试过你的建议,它奏效了。保存然后打开保存的文档后,一切都开始按预期工作(调整大小、插入和格式化文本等)。出于某种原因,在保存/打开之前操作文档不起作用。谢谢。
  • 感谢您的确认。由于其他人可能会遇到此问题,因此我将其写为答案,希望此问答将保留在网站上(这取决于他们是否获得投票或答案被标记为如此)。 FWIW 我不知道确切的“为什么”,我只能猜测为什么编辑可能没有保留这些信息。

标签: c# outlook ms-word vsto


【解决方案1】:

首先将电子邮件保存为 Word 文档。打开它并将格式应用于图片。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    相关资源
    最近更新 更多