2014-09-11 5 views
0

Проблема: -Поиск изображений в документ Word программно

Во время недавнего ребрендинга упражнения на рабочем месте, все текстовые документы (сохраненные в формате RTF-файлов))

У меня есть документы слова, которые 2, 3 или даже размером 4 МБ.

Посмотрев на фотографии в документах, я заметил, что некоторые из них уменьшены до 48%, 70%, 88%, что угодно. Если я вырезаю изображение из документа, вставьте его в Paint.NET, измените его размер, вставьте его обратно в документ и поместите его в соответствии с оригиналом, я могу получить размер документов до менее 1/10 вручную сфальсифицированный.

Я хочу программно обрабатывать документы 1150 Word и находить фотографии, которые масштабируются. Затем я хочу вытащить снимки, изменить их размер, а затем вернуть обратно в замену добавленных вручную изображений. Сохранение дискового пространства.

У меня возникли трудности с навигацией по объектной модели Word и поиском изображений программно.

Эта веб-страница на MSDN говорит, что вы можете добавить их, как это

this.Application.Selection.InlineShapes.AddPicture(@"C:\SamplePicture.jpg"); 

так что я думал, что с помощью коллекции InlineShapes может дать мне доступ к коллекции фотографий в документе.

Я заявлю interop.

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, я не могу показаться, чтобы достать из них ,

_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

Вы говорите, что ваш фрагмент кода не дает вам то, что вы хотите. Что это дает вам и чем оно отличается от того, что вы хотите?Элементы 'Selection' не имеют никакого отношения к получению подсчета (в коллекции Inline Shapes нет необходимости выбирать текст активного документа). Если ваши операторы 'Use' и код, устанавливающий' _WordApp', верны, вы должны получить точный счет. Пожалуйста, добавьте дополнительный код, включая инструкции 'Using'. – joeschwa

+0

@joeschwa Я получаю отсчет нуля в документе, где я знаю, что есть изображение. Я поправлю свой вопрос и включу более широкий круг кода. – cometbill

+1

Шаблоны не обязательно являются InlineShapes. InlineShapes. Также может быть коллекция Shapes в каждом StoryRange (извините, не время сказать больше, чем сейчас). – 2014-09-12 12:28:58

ответ

0

Решение, которое мы сделали в конце концов должен был получить тестер, который был компетентен с Microsoft Word, лист бумаги, карандаш и применение Paint.NET.

Тестер использовал карандаш и бумагу, чтобы пометить размеры и положение изображения, а Paint.Net - изменить размер изображения.

Я знаю, что он не обрабатывал документы/изображения программно, как я и предполагал, но у нас был крайний срок, чтобы завершить процесс, а иногда, как разработчик, вы должны позвонить, когда думаете, что делаете что-то вручную - правильная вещь.

+1

«Иногда, как разработчик, вам нужно позвонить, когда считаете, что делать вещи вручную - это правильная вещь» Не могу согласиться больше! – 2015-02-19 15:55:25

Смежные вопросы