Задача — сформировать отчет с картинками. Картинок много, все формируются программой.
Вопрос как загрузить их всех в документ не сохраняя на ЖД.
Представленный код ошибок не вызывает, но картинки пропадают.
MemoryStream ms = new MemoryStream();
img.Save(ms, ImageFormat.Png);
ImagePart imagePart = _document.MainDocumentPart.AddImagePart(ImagePartType.Png);
ms.Flush();
imagePart.FeedData(ms);
Чего здесь не хватает.
Здравствуйте, G0ga, Вы писали:
G>Чего здесь не хватает.
Необходимо проверить, что ты в Blip-е устанавливаешь идентичное relationID, которое можно получить для созданного imagePart методом GetIdOfPart из ParentPart.
Или если картинки нужно просто обновить, можно использовать старый relationID и воспользоваться перегруженым методом:
public ImagePart AddImagePart(
ImagePartType partType,
string id
)
в который и передавать сущ. relationID
Здравствуйте, Angler, Вы писали:
A>Здравствуйте, G0ga, Вы писали:
G>>Чего здесь не хватает.
A>Необходимо проверить, что ты в Blip-е устанавливаешь идентичное relationID, которое можно получить для созданного imagePart методом GetIdOfPart из ParentPart.
A>Или если картинки нужно просто обновить, можно использовать старый relationID и воспользоваться перегруженым методом:
A>A>public ImagePart AddImagePart(
A> ImagePartType partType,
A> string id
A>)
A>
A>в который и передавать сущ. relationID
С этим проблем нет. Как только правлю код на загрузку картинки через файл все работает.
Складывается ощущение, что Stream картинки закрывается до того, как данные запишутся в файл.
И много, что интересного заметил:
— если использовать один и тот-же FileStream для записи изображения и для загрузки в документ
нельзя (эффект такой же, если делать через MemoryStream). Можно только если закрыть его а, потом заново открыть.
— любой Stream, после операции FeedData, нельзя ни прочитать ни записать т.е сразу в "корзину".
В общем вопросов еще больше становиться.
P.S.
А самый главный хочется адресовать разработчикам OpenXML SDK — Зачем изменили набор инструментов? Старый был более приближен к жизни. И куда пропал Content Control ToolKit?
А сейчас приходиться переименовывать .docx в .zip и разбирать в ручную. Пакету OpenXmlSDK уже не первый год, можно уже расширить набор утилит, а также ....
что-то меня понесло
Здравствуйте, G0ga, Вы писали:
G> — если использовать один и тот-же FileStream для записи изображения и для загрузки в документ нельзя (эффект такой же, если делать через MemoryStream). Можно только если закрыть его а, потом заново открыть.
В смысле, что два разных приемника одновременно читают один поток? Тогда логично — как они будут это делать, ведь у каждого своя позиция в потоке.
Или вы про последовательные операции? Тогда тоже логично — после того как один приемник полностью прочитал поток, указатель потока нужно переставить на начало. Для произвольного потока это не возможно, поэтому делать такие операции должен разработчик, который поставляет поток. В том же FileStream можно просто вызвать Seek. Или он тоже не работает?
G>А самый главный хочется адресовать разработчикам OpenXML SDK — Зачем изменили набор инструментов? Старый был более приближен к жизни. И куда пропал Content Control ToolKit?
У CCT отдельный сайт на codeplex
http://dbe.codeplex.com/. Он обновляется чаще, чем OpenXML SDK (но релизы не последние — лучше брать в исходниках).
Здравствуйте, Романов Михаил, Вы писали:
РМ>Здравствуйте, G0ga, Вы писали:
G>> — если использовать один и тот-же FileStream для записи изображения и для загрузки в документ нельзя (эффект такой же, если делать через MemoryStream). Можно только если закрыть его а, потом заново открыть.
РМ>В смысле, что два разных приемника одновременно читают один поток? Тогда логично — как они будут это делать, ведь у каждого своя позиция в потоке.
РМ>Или вы про последовательные операции? Тогда тоже логично — после того как один приемник полностью прочитал поток, указатель потока нужно переставить на начало. Для произвольного потока это не возможно, поэтому делать такие операции должен разработчик, который поставляет поток. В том же FileStream можно просто вызвать Seek. Или он тоже не работает?
Собственно не это беспокоило меня, а исходная задача загрузить не сохраняя на ЖД т.е. непосредственно MemoryStream => ImagePart.
G>>А самый главный хочется адресовать разработчикам OpenXML SDK — Зачем изменили набор инструментов? Старый был более приближен к жизни. И куда пропал Content Control ToolKit?
РМ>У CCT отдельный сайт на codeplex http://dbe.codeplex.com/. Он обновляется чаще, чем OpenXML SDK (но релизы не последние — лучше брать в исходниках).
Спасибо за ссылку.