Formes de rendu Séparément d'un document

Lors du traitement des documents, une tâche courante consiste à extraire toutes les images trouvées dans le document et à les exporter vers un emplacement externe. Cette tâche devient simple avec la Aspose.Words API, qui fournit déjà la fonctionnalité pour extraire et enregistrer des données d’image. Cependant, parfois, vous pouvez vouloir extraire de la même façon d’autres types de contenu graphique qui sont représentés par un autre type d’objet de dessin, par exemple, une boîte de texte contenant des paragraphes, des formes de flèche et une petite image. Il n’y a pas de façon simple de rendre cet objet puisqu’il s’agit d’une combinaison d’éléments de contenu individuels. Vous pouvez également rencontrer un cas lorsque le contenu a été groupé dans l’objet qui ressemble à une seule image.

Aspose.Words fournit des fonctionnalités pour extraire ce type de contenu de la même manière que vous pouvez extraire une image simple de forme comme contenu rendu. Cet article décrit comment utiliser cette fonctionnalité pour rendre les formes indépendamment du document.

Types de formes Aspose.Words

Tout le contenu d’une couche de dessin de document est représenté par la Shape ou GroupShape le noeud dans le Aspose.Words Module d’objet de document (DOM). Ces contenus peuvent être des boîtes de texte, des images, des AutoShapes, des objets OLE, etc. Certains champs sont également importés comme formes, par exemple, le INCLUDEPICTURE sur le terrain.

Une image simple est représentée par Shape noeud de ShapeType.Image. Ce noeud de forme n’a pas de nœuds d’enfant mais les données d’image contenues dans ce noeud de forme peuvent être accédées par le Shape.ImageData propriété. D’autre part, une forme peut également être composée de nombreux nœuds d’enfants. Par exemple, une forme de boîte de texte, qui est représentée par la ShapeType.TextBox propriété, peut être constitué de nombreux noeuds, comme Paragraph et Table. La plupart des formes peuvent inclure Paragraph et Table noeuds de niveau bloc. Ce sont les mêmes nœuds que ceux apparaissant dans le corps principal. Les formes sont toujours des parties de certains paragraphes, soit incluses directement en ligne, soit ancrées au Paragraphe mais “flottant” n’importe où dans la page du document.

rendering-shapes-separately-from-a-document-aspose-words-java-1

Un document peut aussi contenir des formes regroupées. Grouping peut être activé en Microsoft Word en sélectionnant plusieurs objets et en cliquant surGroupDans le menu clic droit.

rendering-shapes-separately-from-a-document-aspose-words-java-2

En Aspose.Words, ces groupes de formes sont représentés par GroupShape noeud. Ceux-ci peuvent également être invoqués de la même manière pour rendre le groupe entier à l’image.

rendering-shapes-separately-from-a-document-aspose-words-java-3

Le format DOCX peut contenir des types spéciaux d’images, comme des diagrammes ou des graphiques. Ces formes sont également représentées à travers le Shape noeud en Aspose.Words, qui fournit également une méthode similaire pour les rendre comme des images. Par conception, une forme ne peut contenir une autre forme en tant qu’enfant, sauf si cette forme est une image (ShapeType.Image). Par exemple, Microsoft Word ne vous permet pas d’insérer une zone de texte dans une autre zone de texte.

Les types de formes décrits ci-dessus fournissent une méthode spéciale pour rendre les formes à travers la ShapeRenderer En cours. Un exemple de ShapeRenderer classe est récupérée pour un Shape ou GroupShape à travers les GetShapeRenderer ou en passant Shape au constructeur du ShapeRenderer En cours. Cette classe donne accès aux membres, ce qui permet de rendre une forme à ce qui suit:

  • Fichier sur le disque en utilisant Save surcharge de la méthode
  • Flux utilisant la Save surcharge de la méthode
  • Graphiques Objet en utilisant RenderToSize et RenderToScale méthodes

Rendu au fichier ou au flux

Les Save méthode fournit des surcharges qui rendent une forme directement à un fichier ou un flux. Les deux surcharges acceptent un exemple de ImageSaveOptions classe, qui permet de définir des options pour rendre la forme. Cela fonctionne de la même manière que le Document.Save méthode. Même si ce paramètre est requis, vous pouvez passer une valeur null, en spécifiant qu’il n’y a pas d’options personnalisées.

La forme peut être exportée dans n’importe quel format d’image spécifié dans le SaveFormat Énumération. Par exemple, l’image peut être rendue comme image raster, comme JPEG en spécifiant SaveFormat.Jpeg énumération, ou en tant qu’image vectorielle, comme EMF en spécifiant SaveFormat.Emf.

L’exemple de code ci-dessous illustre le rendu d’une forme à une image EMF séparément du document, et l’enregistrement sur disque:

L’exemple de code ci-dessous illustre la forme d’une image JPEG séparément du document et l’enregistrement dans un flux:

Les ImageSaveOptions classe vous permet de spécifier une variété d’options qui contrôlent la façon dont l’image est rendue. La fonctionnalité décrite ci-dessus peut être appliquée de la même manière à GroupShape et Shape les noeuds.

La soumission à une Graphics Objet

Rendu directement à une Graphics objet vous permet de définir vos propres paramètres et l’état Graphics objet. Un scénario commun implique de transformer une forme directement en un Graphics objet récupéré d’un Windows Forme ou Bitmap. Lorsque Shape noeud est rendu, les paramètres affecteront l’apparence de la forme. Par exemple, vous pouvez faire tourner ou à l’échelle la forme en utilisant la RotateTransform ou ScaleTransform méthodes pour Graphics objet.

L’exemple ci-dessous montre comment rendre une forme à une Graphics objet séparé du document et appliquer la rotation à l’image rendue:

De même, RenderToSize méthode, RenderToSizeméthode héritée de la NodeRendererBase est utile pour créer des vignettes de contenu de document. La taille de la forme est spécifiée par le constructeur. Les RenderToSize méthode accepte la Graphics objet, les coordonnées X et Y de la position de l’image, et la taille de l’image (largeur et hauteur) qui sera tracée sur le Graphics objet.

Les Shape peut être rendu à une certaine échelle en utilisant ShapeRenderer.RenderToScale méthode héritée de la NodeRendererBase En cours. Cela est similaire à la Document.RenderToScale méthode qui accepte les mêmes paramètres majeurs. La différence entre ces deux méthodes est que ShapeRenderer.RenderToScale méthode, au lieu d’une taille littérale, vous choisissez une valeur flottante qui échelle la forme pendant son rendu. Si la valeur du flotteur est égale à 1,0, la forme est rendue à 100 % de sa taille originale. Une valeur de flotteur de 0,5 réduit de moitié la taille de l’image.

Rendu d’une image de forme

Les Shape classe représente des objets dans le calque de dessin, comme une AutoShape, une boîte de texte, freeform, un objet OLE, un contrôle ActiveX ou une image. Utilisation Shape classe, vous pouvez créer ou modifier des formes dans un Microsoft Word document. Une propriété importante d’une forme est ShapeType. Les formes de différents types peuvent avoir des capacités différentes dans un document Word. Par exemple, seules les images et les formes OLE peuvent avoir des images à l’intérieur alors que la plupart des formes ne peuvent avoir que du texte.

L’exemple suivant montre comment rendre une image en forme à une image JPEG séparément du document et la sauvegarder sur le disque:

Récupération d’une taille de forme

Les ShapeRenderer classe fournit également des fonctionnalités pour récupérer la taille de la forme en pixels GetSizeInPixels méthode. Cette méthode accepte deux paramètres de flotteur (Single) – l’échelle et le DPI, qui sont utilisés dans le calcul de la taille de la forme lorsque la forme est rendue. La méthode renvoie la Size objet, qui contient la largeur et la hauteur de la taille calculée. Ceci est utile lorsqu’il est nécessaire de connaître la taille de la forme rendue à l’avance, par exemple lors de la création d’un nouveau Bitmap à partir de la sortie rendue.

L’exemple ci-dessous montre comment créer un nouvel objet Bitmap et Graphics avec la largeur et la hauteur de la forme à rendre:

Lorsque vous utilisez RenderToSize ou RenderToScale méthodes, la taille d’image rendue est également retournée dans le SizeF objet. Ceci peut être attribué à une variable et utilisé si nécessaire.

Les SizeInPoints la propriété retourne la taille de la forme mesurée en points (voir ShapeRenderer). Le résultat est SizeF objet contenant la largeur et la hauteur.