问题: -
在最近的重塑工作中,所有单词文档(保存为RTF文件))
我的单词文档大小为2,3或甚至4MB。
观察文件中的图片,我注意到有些图片缩小到48%,70%,88%等等。如果我将图像从文档中剪切出来,将其粘贴到Paint.NET中,调整大小,将其粘贴回文档并按原文定位,我可以将文档的大小降低到不到1/10的人工捏造的。
我想以编程方式处理1150个Word文档,并在那里查找缩放的图片。然后,我想拉出图片,调整大小,然后将它们放回去替换手动添加的图片。节省磁盘空间。
我无法导航Word对象模型并以编程方式查找图片。
MSDN上的这个网页说你可以添加它们,就像这样
this.Application.Selection.InlineShapes.AddPicture(@"C:\SamplePicture.jpg");
所以我认为使用InlineShapes集合可以让我访问文档中的图片集。
我有互操作声明。
using Microsoft.Office.Interop.Word;
using Microsoft.Office.Interop;
using Microsoft.Office;
然后我打开Word应用程序,这样的文档(这个工作)
private void OpenWordApplication()
{
_WordApp = new Microsoft.Office.Interop.Word.Application();
if (chkVisibleWord.CheckState == CheckState.Checked) {
_WordApp.Visible = true;
}
else
{
_WordApp.Visible = false;
}
}
private void OpenTheDocument(string DocumentPath)
{
_WordDoc = _WordApp.Documents.Open(DocumentPath);
changesMade = false;
}
当我试图在InlineShapes中找到eh图片时,我似乎无法抓住它们。
_WordApp.Selection.HomeKey(WdUnits.wdStory);
int picCount = _WordApp.ActiveDocument.InlineShapes.Count;
MessageBox.Show(string.Format("There are {0} images in this document", picCount));
我收到一个消息框,说明计数为零。
注意:应用程序在Word中打开文档就好了。根据我在表单上检查的复选框,它对文档执行其他操作,对我来说问题似乎是在访问InlineShapes集合时。
任何指针。到目前为止,我很感谢你的关注?
提前致谢
答案 0 :(得分:0)
我们最终做的解决方案是让一位能够使用Microsoft Word,一张纸,一支铅笔和Paint.Net应用程序的测试人员。
测试人员使用铅笔和纸张标记图像的尺寸和位置,使用Paint.Net调整图像大小。
我知道它没有按照我的预期编程处理文档/图像,但我们有一个截止日期来完成流程,有时作为开发人员,当你认为手动操作时你必须打电话是正确的做法。
答案 1 :(得分:0)
尝试:
foreach (Microsoft.Office.Interop.Word.Shape s in wordApp.ActiveDocument.Shapes)
{
...
}
答案 2 :(得分:0)
此代码将找到文档中的所有嵌入式图片。这些确实是内联形状。因此,不确定操作码的问题是什么。
Number in in-line shapes = 4
Shape (width,height) = (293.25,164.75)
Shape type = wdInlineShapePicture
Shape (width,height) = (412.5,231.75)
Shape type = wdInlineShapePicture
Shape (width,height) = (226.9,127.5)
Shape type = wdInlineShapePicture
Shape (width,height) = (222.75,125.1)
Shape type = wdInlineShapePicture
这将产生输出...
setResponse