java - 使用 java 从 MS Word 文件读取形状(矩形、正方形、圆形、箭头等)、剪贴画

标签 java apache-poi shapes aspose

我能够从 ms word 表中获取图像,但无法获取形状和剪贴画。

public static void main(String[] args) throws Exception {
    // The path to the documents directory.
    try {
        String dataDir = "E://test//demo.docx";
        generatePicturesAsImages(dataDir);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public static void generatePicturesAsImages(String sourcePath) {
    try {
        Document doc = new Document(sourcePath);
        ImageSaveOptions options = new ImageSaveOptions(SaveFormat.JPEG);
        options.setJpegQuality(100);
        options.setResolution(100);
        // options.setUseHighQualityRendering(true);
        List<ShapeRenderer> pictures = getAllPictures(doc);
        if (pictures != null) {
            for (int i = 0; i < pictures.size(); i++) {
                ShapeRenderer picture = pictures.get(i);
                String imageFilePath = sourcePath + "_output_" + i + ".jpeg";
                picture.save(imageFilePath, options);
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private static List<ShapeRenderer> getAllPictures(final Document document) throws Exception {
    List<ShapeRenderer> images = null;
    @SuppressWarnings("unchecked")
    NodeCollection<DrawingML> nodeCollection = document.getChildNodes(NodeType.DRAWING_ML, Boolean.TRUE);
    if (nodeCollection.getCount() > 0) {
        images = new ArrayList<ShapeRenderer>();
        for (DrawingML drawingML : nodeCollection) {
            images.add(drawingML.getShapeRenderer());
        }
    }
    return images;
}

上面的程序是从表格中获取图像,所以我应该添加更多的东西来获得形状。请建议我任何帮助,我们将不胜感激!

最佳答案

您正在使用旧版本的 Aspose.Words。如果您想使用旧版本的 Aspose.Words,请在您的 getAllPictures 方法中使用 Document.getChildNodes 获取 Shape 和 DrawingML 节点的集合。

NodeCollection<DrawingML> drwingmlnodes = document.getChildNodes(NodeType.DRAWING_ML, Boolean.TRUE);

NodeCollection<Shape> shapenodes = document.getChildNodes(NodeType.SHAPE, Boolean.TRUE);

请注意,我们删除了 DrawingML from our APIs in Aspose.Words 15.2.0 .如果您想使用最新版本的 Aspose.Words v16.5.0 ,请仅使用 NodeType.SHAPE。

我在 Aspose 工作,担任开发人员布道师。

关于java - 使用 java 从 MS Word 文件读取形状(矩形、正方形、圆形、箭头等)、剪贴画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38038677/

相关文章:

java - 如何画一个由四个三角形组成的正方形? (libgdx)

java - 当使用 UUID 命名时,为 akka actor 定义调度程序

java - 使用 XSSFworkbook POI API 在 Excel 中设置单元格格式

java - 如何在绘图面板上选择形状?

java - 如何使用java读取Excel中的100万行记录

java - 如何检查sheet是否存在?

ios - SKSpriteNode 来自图像触摸检测

java - 在 IntelliJ IDEA 14.1.0 中启用 Web 应用程序支持

java - auth0-java v1.0.0 失败并出现错误 400 : User is not authorized to the audience for those scopes

java - SpringBoot : Failing at serialize Integer class