В общем, есть много Word'ов, которые я обрабатываю через interop
и пытаюсь вытянуть картинки, что бы их сохранить отдельно.
До сего момента я просто брал InlineShapes
и сохранял их.
Однако, попался хитрый Word, где кол-во InlineShapes
=0 и есть просто обычный Shape, который имеет Id=17(Т.е текстовый) и в него вписана картинка.
Я копался в свойствах этого Shape, но не нашел каких-либо свойств в которых могла бы хранится картинка.
Как я могу достать картинку из этого Shape и сохранить ее?
Да, есть вариант конвертировать все в docx, а потом открыть zip'ом и все такое..., но это крайний случай.
P.S Тег VBA так как работа с interop+- похожа на VBA=> VBAшное решение на 99% мне подойдет.
Собственно у вас получается, что inlineShape вставлен в Shape. Если преобразовать Shape в InlineShape, то получим рисунок с рамкой, а это не совсем то, что нужно.
Есть вариант с использованием OpenXML
Надо поставить референс на NugetPackage DocumentFormat.OpenXml
using DocumentFormat.OpenXml.Packaging;
Далее мы проходим по всем внедренным изображениям и сохраняем
string document = @"D:\ttt.docx";
using (WordprocessingDocument wordprocessingDocument =
WordprocessingDocument.Open(document, false))
{
var imageParts = wordprocessingDocument.MainDocumentPart.ImageParts;
foreach (var imagePart in imageParts)
{
var uri = imagePart.Uri;
var filename = uri.ToString().Split('/').Last();
var stream = wordprocessingDocument.Package.GetPart(uri).GetStream();
Bitmap b = new Bitmap(stream);
b.Save(@"D:\" + filename);
}
}
В данном способе мы сохраняем любые внедренные изображения независимо от места внедрения.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Подскажите как в Xaml, через DataContext или ItemSource(или я не правильно думаю, что бы прибиндить из XAML свою коллекцию _ListProduct(Желательно с тремя столбиками,...
Есть массив спрайтов,у каждого элемента свой цвет и картинкаКак можно через enum(или другим способом) присвоить значение каждому элементу
Я разработал модели и контекст, чтобы можно было связать эти модели с таблицами в бдНо почему-то при любом обращении к полученным данным приложение...
Мне нужно сделать открепляемые и прикрепляемые окошки на wpf C# как в студииИначе говоря что бы можно было открепить панель от основного окна...