aspose-words插入visio后显示Aspose.Words for.NET

aspose-words插入visio后显示Aspose.Words for.NET
一下是我的代码:

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// builder.writeln("Spreadsheet Ole object:");
Shape shape = builder.insertOleObject("D:\\dbbg\\大河家等保图.vsdx",  "Visio.Drawing.15", false, false, null);
shape.setHeight(50D);
shape.setWidth(100D);

doc.save("D:\\dbbg\\textPoiTl_ole_out.docx");

结果:

期望效果:

各位有知道解决方案的嘛

@junping_huang 这是预期的行为。 您将“null”作为 OLE 对象表示传递,因此 Aspose.Words 使用默认图像。 要显示 Visio 对象的预览,您应该将其渲染为图像并将该图像作为 OLE 对象表示传递到“insertOleObject”方法中。 不幸的是,Visio 对象的呈现超出了 Aspose.Words 范围。 您可以使用 Aspose.Diagram 渲染 Visio 对象:
https://docs.aspose.com/diagram/java/convert-visio-to-image/

您说的是这样调整代码吗?

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Initialize a Diagram class
Diagram diagram = new Diagram("D:\\dbbg\\大河家等保图.vsdx");
// Save diagram in the png format
diagram.save("D:\\dbbg\\Visio_out.png", SaveFileFormat.PNG);

File file = new File("D:\\dbbg\\Visio_out.png");
FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);

Shape shape = builder.insertOleObject("D:\\dbbg\\大河家等保图.vsdx", "Visio.Drawing.15", false, true, bufferedInputStream);
shape.setWidth(682.5D);
shape.setHeight(366D);
shape.setHorizontalAlignment(HorizontalAlignment.CENTER);

doc.save("D:\\dbbg\\textPoiTl_ole_out.docx");

这样修改后虽然可以看到visio图,但是在修改visio内容后,图片不会跟随更新该如何解决

@junping_huang 是的,您的代码已正确修改。

不幸的是,编辑文档后的 MS Word 行为不受 Aspose.Words 控制。

以上这种方式是把visio以图标的形式插入到word中,这样我在修改visio后图标不会跟随更新,能否让visio插入后以预览的形式展示在word中呢

@junping_huang 请检查这样的代码:

Shape shape = builder.insertOleObject("D:\\dbbg\\大河家等保图.vsdx", "Visio.Drawing.15", false, false, bufferedInputStream);