Как вставить аудио файл в Word do c с использованием OpenXml - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь вставить аудиофайл в Word do c, используя Open Xml. Я реализовал свой код, но после выполнения моего кода аудиофайл не добавлен. Я также помогу OPEN XML SDK Tool 2.5. Код кажется нормальным, но звук не вставлен. Ниже мой проверенный код:

ImagePart imagePart = mainPart.AddImagePart(ImagePartType.Emf);

using (var imageStream = new ExportUtils().GetBinaryDataStream())
{
    imagePart.FeedData(imageStream);
}

EmbeddedObjectPart embeddedObjectPart = mainPart.AddEmbeddedObjectPart("application/vnd.openxmlformats-officedocument.oleObject");
thumPath = GetMyFilePath(); //Audio file path

using (var objStream = new FileStream(thumPath, FileMode.Open))
{
    embeddedObjectPart.FeedData(objStream);
}

AddAudio(wordprocessingDocument, mainPart.GetIdOfPart(imagePart), mainPart.GetIdOfPart(embeddedObjectPart), posX, posY);

Код вставки звука

private static void AddAudio(WordprocessingDocument wordDoc, string imgRelationshipId, string objRelationshipId, int x, int y)
{

        string style = string.Format("position: absolute; margin - left:{0}pt; margin - top:{1}pt; width: 75.5pt; height: 49pt; z - index:-251657216; mso - position - horizontal - relative:text; mso - position - vertical - relative:text", x, y);

        ow.EmbeddedObject embeddedObject = new ow.EmbeddedObject() { DxaOriginal = "1440", DyaOriginal = "1440", AnchorId = "6359C433" };

        V.Shape shape = new V.Shape() { Id = "_x0000_s1026", Style = style };

        V.ImageData imageData = new V.ImageData() { Title = "Voice", RelationshipId = imgRelationshipId };

        shape.Append(imageData);
        Ovml.OleObject oleObject = new Ovml.OleObject() { Type = Ovml.OleValues.Embed, ProgId = "Package", ShapeId = "_x0000_s1026", DrawAspect = Ovml.OleDrawAspectValues.Icon, ObjectId = "_1647627410", Id = objRelationshipId };

        embeddedObject.Append(shape);
        embeddedObject.Append(oleObject);

        wordDoc.MainDocumentPart.Document.Body.AppendChild(new ow.Paragraph(new ow.Run(embeddedObject)));
 }

Мой проект: x64

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...