我有一个word文档,里面有vsd文件格式。我需要识别这个vsd文件,并提取这个viso中的图片用于界面展示,然后将识别后的这个viso图片重新导出到word中,请问aspose.words for java支持吗?测试文件如下viso file1.zip (86.1 KB)
您需要以下两个API才能满足此要求:
请检查以下Java代码:
Document doc = new Document("E:\\Temp\\viso file1\\test.docx");
Shape targetShape = null;
for (Shape shape : (Iterable<Shape>) doc.getChildNodes(NodeType.SHAPE, true)) {
if (shape.getOleFormat() != null) {
targetShape = shape;
break;
}
}
if (targetShape != null) {
if (targetShape.getOleFormat().isLink()) {
System.out.println("Object is Linked");
String fileName = targetShape.getOleFormat().getSourceFullName();
System.out.println(fileName);
} else if (targetShape.getOleFormat().getOleIcon()) {
System.out.println("Object displayed as icon");
System.out.println(targetShape.getOleFormat().getSuggestedExtension());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
targetShape.getOleFormat().save(baos);
com.aspose.diagram.Diagram diagram = new com.aspose.diagram.Diagram(new ByteArrayInputStream(baos.toByteArray()));
ByteArrayOutputStream baosImage = new ByteArrayOutputStream();
diagram.save(baosImage, new com.aspose.diagram.ImageSaveOptions(SaveFileFormat.JPEG));
DocumentBuilder builder = new DocumentBuilder();
builder.insertImage(baosImage.toByteArray());
builder.getDocument().save("E:\\Temp\\viso file1\\20.7.docx");
} else if (!targetShape.getOleFormat().getOleIcon()) {
System.out.println("Object displayed as Content");
System.out.println(targetShape.getOleFormat().getSuggestedExtension());
}
}