【发布时间】: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 我不知道确切的“为什么”,我只能猜测为什么编辑可能没有保留这些信息。