Сообщение: Я закомментировал весь код, связанный с вставкой изображений, и создал новый метод вставки изображения с рабочего стола. Даже когда я закомментирую метод тестирования (чтобы не осталось кода, связанного с вставкой изображения), документ открывается. Однако когда я использую тестовый метод (InsertImageIntoWord), я получаю ту же ошибку при открытии документа Word.
Поэтому очевидно, что проблема вызвана кодом, содержащимся в InsertImageIntoWord.
В коде нет ошибок и исключений, изображения доступны, я использую последнюю версию DocumentFormat.OpenXml.
Код: Выделить всё
public void InsertImageIntoWord(MainDocumentPart mainPart, Body body, string imagePath)
{
ImagePart imagePart = mainPart.AddImagePart(ImagePartType.Png);
using (FileStream stream = new FileStream(imagePath, FileMode.Open))
{
imagePart.FeedData(stream);
}
string imagePartId = mainPart.GetIdOfPart(imagePart);
var element =
new Drawing(
new DW.Inline(
new DW.Extent() { Cx = 500000L, Cy = 500000L }, // Dimensioni dell'immagine
new DW.EffectExtent()
{
LeftEdge = 0L,
TopEdge = 0L,
RightEdge = 0L,
BottomEdge = 0L
},
new DW.DocProperties()
{
Id = (UInt32Value)1U,
Name = "Immagine"
},
new DW.NonVisualGraphicFrameDrawingProperties(
new A.GraphicFrameLocks() { NoChangeAspect = true }),
new A.Graphic(
new A.GraphicData(
new A.Picture(
new A.NonVisualPictureProperties(
new A.NonVisualDrawingProperties()
{
Id = (UInt32Value)0U,
Name = "Picture"
},
new A.NonVisualPictureDrawingProperties()),
new A.BlipFill(
new A.Blip()
{
Embed = imagePartId,
CompressionState = A.BlipCompressionValues.Print
},
new A.Stretch(new A.FillRectangle())),
new A.ShapeProperties(
new A.Transform2D(
new A.Offset() { X = 0L, Y = 0L },
new A.Extents() { Cx = 990000L, Cy = 792000L }),
new A.PresetGeometry(new A.AdjustValueList())
{ Preset = A.ShapeTypeValues.Rectangle })))
)
{ })
);
Paragraph paragraph = new Paragraph(new Run(element));
body.Append(paragraph);
}
public void GenerateDocxDocument(TreeView treeViewFunction)
{
using (WordprocessingDocument wordDocument = WordprocessingDocument.Create($"Prova_documento.docx", WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = wordDocument.AddMainDocumentPart();
mainPart.Document = new Document();
Body body = new Body();
foreach (var hf in HydFunctionList)
{
...
if (hf is Cylinder cyl)
{
IterateClassProperties(cyl, mainPart, table);
}
else if (hf is MasterValve mv)
{
IterateClassProperties(mv, mainPart, table);
}
body.Append(table);
body.Append(new Paragraph(new Run(new Text(""))));
}
InsertImageIntoWord(mainPart, body, imagePath);
mainPart.Document.Append(body);
mainPart.Document.Save();
}
}
Это сообщение об ошибке появляется вместе с этим кодом, но это последняя версия, которую я реализовал, и я получал ее даже без недавних изменений. . Я не понимаю, проблема в коде или, например, в способе доступа к изображениям, или в чем-то внешнем по отношению к коду.
Подробнее здесь: https://stackoverflow.com/questions/791 ... nto-tables
Мобильная версия