Trabalhar com Clipes em Ficheiro PS | Java

Contents
[ Hide Show ]

Adicionar Clip em Documento PS

Um clipe num documento PS é um caminho que delimita o conteúdo do estado gráfico atual que será apresentado no visualizador ou editor PS. O conteúdo que ficar para além dos limites será recortado.

Um caminho de recorte em Java pode ser atribuído de três formas:

Neste momento, a biblioteca Aspose.Page para Java oferece a primeira e a segunda formas de recorte. No exemplo abaixo, obtemos uma forma circular como caminho de recorte e recortamos um retângulo preenchido a azul no mesmo estado gráfico.

Para adicionar um clip ao novo PsDocument com a biblioteca Aspose.Page para Java, neste exemplo, seguimos os seguintes passos:

  1. Crie um fluxo de saída para o ficheiro PS resultante.
  2. Crie um objeto PsSaveOptions com as opções padrão.
  3. Crie um PsDocument de 1 página com um fluxo de saída já criado e opções de guardar.
  4. Crie um novo estado gráfico.
  5. Crie uma forma circular (objeto java.awt.geom.Ellipse2D).
  6. Defina um clipe com este percurso.
  7. Defina uma pintura para o estado gráfico atual do PsDocument.
  8. Preencha o percurso retangular com a pintura atual.
  9. Saia do estado gráfico atual para o nível superior.
  10. Transfira para o local do retângulo preenchido.
  11. Trace com uma linha tracejada os limites do mesmo retângulo acima do preenchido para mostrar os limites do retângulo preenchido recortado.
  12. Feche a página.
  13. Guarde o 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();

Veja como trabalhar com recortes em documentos PS em .NET.

O resultado da execução deste código é apresentado como

Clipping

No próximo exemplo, obtemos um tipo de letra utilizado para recortar um retângulo preenchido a azul com o contorno do texto.

Para adicionar um recorte por texto ao novo PsDocument com a biblioteca Aspose.Page para Java, neste exemplo, seguimos os seguintes passos:

  1. Crie um fluxo de saída para o ficheiro PS resultante.
  2. Crie o objeto PsSaveOptions com as opções padrão.
  3. Crie um PsDocument de 1 página com um fluxo de saída já criado e opções de guardar.
  4. Crie um novo estado gráfico.
  5. Crie uma fonte.
  6. Defina um recorte com o texto e o tipo de letra.
  7. Defina uma pintura para o estado gráfico atual do PsDocument.
  8. Preencha o percurso do retângulo com a pintura atual.
  9. Saia do estado gráfico atual para o nível superior.
  10. Translação para o local do retângulo preenchido.
  11. Trace com uma linha tracejada os limites do mesmo retângulo acima do preenchido para mostrar os limites do retângulo preenchido recortado.
  12. Feche a página.
  13. Guarde o 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();

Veja como trabalhar com clips em documentos PS em .NET.

O resultado da execução deste código aparece como

ClippingByText

Pode descarregar exemplos e ficheiros de dados do GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.