Travailler avec des clips dans un fichier PS| Java
Ajouter un clip dans un document PS
Un clip dans un document PS est un chemin qui délimite le contenu de l’état graphique actuel qui sera affiché dans la visionneuse ou l’éditeur PS. Le contenu laissé au-delà des limites sera coupé.
Un chemin de détourage en Java peut être attribué de trois manières :
- par n’importe quelle classe implémentée java.awt.Shape pouvant contenir n’importe quelle forme fermée ;
- par contour de texte ;
- par une image bicolore de 1 bpp (bits par pixel) comme masque de pochoir ;
À l’heure actuelle, la bibliothèque Aspose.Page pour Java propose la première et la deuxième manière de découper. Dans l’exemple ci-dessous, nous obtenons une forme de cercle comme chemin de détourage et découpons un rectangle rempli de bleu dans le même état graphique.
Pour ajouter un clip au nouveau PsDocument avec la bibliothèque Aspose.Page pour Java dans cet exemple, nous procédons comme suit :
- Créez un flux de sortie pour le fichier PS résultant.
- Créez un objet PsSaveOptions avec les options par défaut.
- Créez un PsDocument d’une page avec un flux de sortie déjà créé et enregistrez les options.
- Créez un nouvel état graphique.
- Créez une forme de cercle (objet java.awt.geom.Ellipse2D).
- Définissez un clip avec ce chemin.
- Définissez une peinture sur l’état graphique actuel de PsDocument.
- Remplissez le chemin du rectangle avec la peinture actuelle.
- Quittez l’état graphique actuel pour passer au niveau supérieur.
- Traduisez à la place du rectangle rempli.
- Tracez avec une ligne pointillée les limites du même rectangle au-dessus de celui rempli pour afficher les limites du rectangle rempli coupé.
- Fermez la page.
- Enregistrez le document.
1// Demonstrates clipping by shape and clipping by text in PS document.
2String outputFileName = "ApplyClipByShape_outPS.ps";
3
4//Create save options with A4 size
5PsSaveOptions options = new PsSaveOptions();
6
7// Create new 1-paged PS Document
8PsDocument document = new PsDocument(getOutputDir() + outputFileName, options, false);
9
10//Create graphics path from the rectangle
11GeneralPath rectanglePath = new GeneralPath();
12rectanglePath.append(new Rectangle2D.Float(0, 0, 300, 200), false);
13
14////////////////////////////////////// Clipping by shape ///////////////////////////////
15
16//Save graphics state in order to return back to this state after transformation
17document.writeGraphicsSave();
18
19//Displace current graphics state on 100 points to the right and 100 points to the bottom.
20document.translate(100, 100);
21
22//Create graphics path from the circle
23GeneralPath circlePath = new GeneralPath();
24circlePath.append(new Ellipse2D.Float(50, 0, 200, 200), false);
25
26//Add clipping by circle to the current graphics state
27document.clip(circlePath);
28
29//Set paint in the current graphics state
30document.setPaint(Color.BLUE);
31
32//Fill the rectangle in the current graphics state (with clipping)
33document.fill(rectanglePath);
34
35//Restore graphics state to the previous (upper) level
36document.writeGraphicsRestore();
37
38//Displace upper level graphics state on 100 points to the right and 100 points to the bottom.
39document.translate(100, 100);
40
41//Create dashed stroke similar to Pen with DashStyle.Dash
42float[] dash = new float[] { 5.0f };
43BasicStroke stroke = new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f);
44
45document.setStroke(stroke);
46
47//Draw the rectangle in the current graphics state (has no clipping) above clipped rectangle
48document.draw(rectanglePath);
49
50//Close current page
51document.closePage();
52
53//Save the document
54document.save();Voir Travailler avec des clips dans des documents PS dans .NET.
Le résultat de l’exécution de ce code apparaît comme

Dans l’exemple suivant, nous obtenons une police utilisée pour découper un rectangle rempli de bleu avec le contour du texte.
Pour ajouter un extrait de texte au nouveau PsDocument avec la bibliothèque Aspose.Page pour Java dans cet exemple, nous procédons comme suit :
- Créez un flux de sortie pour le fichier PS résultant.
- Créez un objet PsSaveOptions avec les options par défaut.
- Créez un PsDocument d’une page avec un flux de sortie déjà créé et enregistrez les options.
- Créez un nouvel état graphique.
- Créez une police.
- Définissez un clip avec le texte et la police.
- Définissez une peinture sur l’état graphique actuel de PsDocument.
- Remplissez le chemin du rectangle avec la peinture actuelle.
- Quittez l’état graphique actuel pour passer au niveau supérieur.
- Traduisez à la place du rectangle rempli.
- Tracez avec une ligne pointillée les limites du même rectangle au-dessus de celui rempli pour afficher les limites du rectangle rempli coupé.
- Fermez la page.
- Enregistrez le document.
1// Demonstrates clipping by text in PS document.
2String outputFileName = "ApplyClipByText_outPS.ps";
3
4//Create save options with A4 size
5PsSaveOptions options = new PsSaveOptions();
6
7// Create new 1-paged PS Document
8PsDocument document = new PsDocument(getOutputDir() + outputFileName, options, false);
9
10//Create graphics path from the rectangle
11GeneralPath rectanglePath = new GeneralPath();
12rectanglePath.append(new Rectangle2D.Float(0, 0, 300, 200), false);
13
14//Save graphics state in order to return back to this state after transformation
15document.writeGraphicsSave();
16
17//Displace current graphics state on 100 points to the right and 100 points to the bottom.
18document.translate(100, 100);
19
20float[] dash = new float[] { 5.0f };
21BasicStroke stroke = new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f);
22
23int fontSize = 120;
24Font font = new Font("Arial", Font.BOLD, fontSize);
25
26//Clip rectangle by text's outline
27document.clipText("ABC", font, 20, fontSize + 10);
28
29//Set paint in the current graphics state
30document.setPaint(Color.BLUE);
31
32document.fill(rectanglePath);
33
34document.writeGraphicsRestore();
35
36document.translate(100, 100);
37
38//Set paint in the current graphics state
39document.setPaint(Color.BLUE);
40
41document.setStroke(stroke);
42//Draw the rectangle in the current graphics state (has no clipping) above clipped rectangle
43document.draw(rectanglePath);
44
45//Close current page
46document.closePage();
47
48//Save the document
49document.save();Voir Travailler avec des clips dans des documents PS dans .NET.
Le résultat de l’exécution de ce code apparaît comme

Vous pouvez télécharger des exemples et des fichiers de données à partir de GitHub.