До сих пор этот блок кода использовался для построения документов с текстом в течение нескольких месяцев без каких-либо препятствий. Я сейчас пытаюсь динамически добавлять изображения. Я потратил около двух дней, уставившись на код и исследуя, и сейчас все кончено. Я подозреваю, что проблема в том, что отношения не создаются (подробности ниже.)
//set stuff up...
WordprocessingDocument doc = WordprocessingDocument.Open(fsPat, true, new OpenSettings(){
AutoSave = true,
MarkupCompatibilityProcessSettings = new MarkupCompatibilityProcessSettings(MarkupCompatibilityProcessMode.ProcessAllParts,
DocumentFormat.OpenXml.FileFormatVersions.Office2007),
MaxCharactersInPart = long.MaxValue
});
MainDocumentPart mainPart = doc.MainDocumentPart;
.
.Other stuff goes here
.
//now the fun...
Run r2 = new Run();
// Add an ImagePart.
ImagePart ip = mainPart.AddImagePart(ImagePartType.Png);
string imageRelationshipID = mainPart.CreateRelationshipToPart(ip); //
using (Stream imgStream = ip.GetStream())
{
System.Drawing.Bitmap b = new System.Drawing.Bitmap("myfile.png");
b.Save(imgStream, System.Drawing.Imaging.ImageFormat.Png);
}
Drawing drawing = BuildImage(imageRelationshipID, "name"+imageRelationshipID.ToString(), 17, 17);
r2.Append(drawing);
p.Append(r2);
Часть изображения по существу скопирована из http://blog.stuartwhiteford.com/?p=33) и в настоящее время выполняется в цикле. Я также скопировал его функцию BuildImage () и использую ее как есть.
Когда я открываю получившийся документ, я вижу красные крестики, где изображения говорят: «Это изображение не может быть отображено в данный момент».
Когда я открываю zip, изображения будут отображаться в root / media, но не в root / word / media, как я ожидал. Я также не могу найти изображения, на которые есть ссылки ни в одном из файлов отношений. В идеале они должны быть в корне / word / _rels / document.xml.rels. Вы заметите, что я изменил настройку imageRelationshipID в надежде исправить это. Это не так.
Пожалуйста, помогите. Спасибо.