Trabajar con clips en archivos PS| Java
Agregar clip en documento PS
Un clip en un documento PS es una ruta que limita el contenido del estado gráfico actual que se mostrará en el visor o editor de PS. El contenido que quede fuera de los límites se cortará.
Una ruta de recorte en Java se puede asignar de tres maneras:
- por cualquier clase implementada java.awt.Shape que pueda contener formas cerradas;
- por esquema de texto;
- por 1 bpp (bits por píxel) imagen de 2 colores como máscara de plantilla;
En este momento, la biblioteca Aspose.Page para Java ofrece la primera y la segunda forma de recorte. En el siguiente ejemplo, obtenemos una forma de círculo como trazado de recorte y cortamos un rectángulo relleno de azul en el mismo estado de gráfico.
Para agregar un clip al nuevo PsDocument con la biblioteca Aspose.Page para Java en este ejemplo, realizamos los siguientes pasos:
- Cree una secuencia de salida para el archivo PS resultante.
- Cree el objeto PsSaveOptions con opciones predeterminadas.
- Cree un PsDocument de 1 página con un flujo de salida ya creado y opciones para guardar.
- Cree un nuevo estado de gráficos.
- Cree una forma de círculo (java.awt.geom.Ellipse2D objeto).
- Establezca un clip con esta ruta.
- Establezca una pintura en el estado de gráficos actual de PsDocument.
- Rellena el trazado del rectángulo con la pintura actual.
- Salga del estado de gráficos actual al nivel uno superior.
- Traduzca al lugar del rectángulo relleno.
- Traza con una línea discontinua los límites del mismo rectángulo encima del relleno para mostrar los límites del rectángulo relleno recortado.
- Cierra la página.
- Guarde el documento.
1//Create an output stream for the PostScript document
2FileOutputStream outPsStream = new FileOutputStream(dataDir + "Clipping_outPS.ps");
3//Create save options with A4 size
4PsSaveOptions options = new PsSaveOptions();
5
6// Create a new PS Document with the page opened
7PsDocument document = new PsDocument(outPsStream, options, false);
8
9//Create a rectangle
10Shape rectangle = new Rectangle2D.Float(0, 0, 300, 200);
11
12//Set the paint in the upper level graphics state
13document.setPaint(Color.BLUE);
14
15//Save the graphics state to return back to this state after the transformation
16document.writeGraphicsSave();
17
18//Displace the current graphics state on 100 points to the right and 100 points to the bottom.
19document.translate(100, 100);
20
21//Create a circle shape
22Shape circle = new Ellipse2D.Float(50, 0, 200, 200);
23
24//Add clipping by the circle to the current graphics state
25document.clip(circle);
26
27//Fill the rectangle in the current graphics state (with clipping)
28document.fill(rectangle);
29
30//Restore the graphics state to the previus (upper) level
31document.writeGraphicsRestore();
32
33//Displace the upper-level graphics state on 100 points to the right and 100 points to the bottom.
34document.translate(100, 100);
35
36BasicStroke stroke = new BasicStroke(2,
37 BasicStroke.CAP_BUTT,
38 BasicStroke.JOIN_MITER,
39 10.0f, new float []{5.0f}, 0.0f);
40
41document.setStroke(stroke);
42
43//Draw the rectangle in the current graphics state (has no clipping) above the clipped rectangle
44document.draw(rectangle);
45
46//Close the current page
47document.closePage();
48//Save the document
49document.save();
Vea cómo trabajar con clips en documentos PS en .NET.
El resultado de ejecutar este código aparece como
En el siguiente ejemplo, obtenemos una fuente utilizada para recortar un rectángulo relleno de azul con el contorno del texto.
Para agregar un recorte por texto al nuevo PsDocument con la biblioteca Aspose.Page para Java en este ejemplo, realizamos los siguientes pasos:
- Cree una secuencia de salida para el archivo PS resultante.
- Cree el objeto PsSaveOptions con opciones predeterminadas.
- Cree un PsDocument de 1 página con un flujo de salida ya creado y opciones para guardar.
- Cree un nuevo estado de gráficos.
- Crea una fuente.
- Establece un clip con el texto y la fuente.
- Establezca una pintura en el estado de gráficos actual de PsDocument.
- Rellena el trazado del rectángulo con la pintura actual.
- Salga del estado de gráficos actual al nivel uno superior.
- Traduzca al lugar del rectángulo relleno.
- Traza con una línea discontinua los límites del mismo rectángulo encima del relleno para mostrar los límites del rectángulo relleno recortado.
- Cierra la página.
- Guarde el documento.
1//Create output stream for PostScript document
2FileOutputStream outPsStream = new FileOutputStream(dataDir + "Clipping_outPS.ps");
3//Create save options with A4 size
4PsSaveOptions options = new PsSaveOptions();
5
6// Create a new PS Document with the page opened
7PsDocument document = new PsDocument(outPsStream, options, false);
8
9//Create a rectangle
10Shape rectangle = new Rectangle2D.Float(0, 0, 300, 200);
11
12//Set paint in the upper-level graphics state
13document.setPaint(Color.BLUE);
14
15//Save graphics state to return back to this state after the transformation
16document.writeGraphicsSave();
17
18//Displace current graphics state on 100 points to the right and 100 points to the bottom.
19document.translate(100, 100);
20
21int fontSize = 120;
22Font font = new Font("Arial", Font.BOLD, fontSize);
23
24//Clip rectangle by text's outline
25document.clipText("ABC", font, 20, fontSize + 10);
26document.fill(rectangle);
27
28//Restore graphics state to the previous (upper) level
29document.writeGraphicsRestore();
30
31//Displace upper-level graphics state on 100 points to the right and 100 points to the bottom.
32document.translate(100, 100);
33
34BasicStroke stroke = new BasicStroke(2,
35 BasicStroke.CAP_BUTT,
36 BasicStroke.JOIN_MITER,
37 10.0f, new float []{5.0f}, 0.0f);
38
39document.setStroke(stroke);
40
41//Draw the rectangle in the current graphics state (has no clipping) above the clipped rectangle
42document.draw(rectangle);
43
44//Close the current page
45document.closePage();
46//Save the document
47document.save();
Vea cómo trabajar con clips en documentos PS en .NET.
El resultado de ejecutar este código aparece como
Puede descargar ejemplos y archivos de datos desde GitHub.