2016-06-26 18 views
4

Ich bin in der Lage, Bild von ms Worttabelle, aber nicht in der Lage, Formen und Clip-Arts zu bekommen.Lesen Formen (Rechteck, Quadrat, Kreis, Pfeil usw.), ClipArts aus MS Word-Datei mit Java

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; 
} 

Above Programm Bilder von Tisch zu bekommen, so was soll ich mehr hinzufügen, werden die Formen bekommen .. Bitte machen Sie mir jede Hilfe zu schätzen wissen werden!

Antwort

1

Sie verwenden eine ältere Version von Aspose.Words. Wenn Sie eine ältere Version von Aspose.Words verwenden möchten, rufen Sie die Auflistung der Shape- und DrawingML-Knoten mit Document.getChildNodes in Ihrer getAllPictures-Methode ab.

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

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

Beachten Sie, dass wir die DrawingML from our APIs in Aspose.Words 15.2.0 entfernt haben. Wenn Sie die neueste Version von Aspose.Words v16.5.0 verwenden möchten, verwenden Sie bitte nur NodeType.SHAPE.

Ich arbeite mit Aspose als Entwickler Evangelist.