Работа с клипами в PS-файле | Java

Добавить обрезку в документ PS

Клип в документе PS — это путь, ограничивающий содержимое текущего состояния графики, которое будет отображаться в средстве просмотра или редакторе PS. Контент, выходящий за пределы, будет обрезан.
Путь обрезки в Java можно назначить тремя способами:

На данный момент библиотека Aspose.Page для Java предлагает первый и второй способы отсечения. В приведенном ниже примере мы получаем форму круга в качестве обтравочного контура и отсекаем прямоугольник с синей заливкой в ​​том же графическом состоянии.

Чтобы добавить клип в новый PsDocument с помощью библиотеки Aspose.Page для Java, в этом примере мы выполняем следующие шаги:

  1. Создайте выходной поток для полученного PS-файла.
  2. Создайте объект PsSaveOptions с параметрами по умолчанию.
  3. Создайте одностраничный PsDocument с уже созданным потоком вывода и сохраните параметры.
  4. Создайте новое графическое состояние.
  5. Создайте фигуру круга (объект java.awt.geom.Ellipse2D).
  6. Установите клип по этому пути.
  7. Установите отрисовку текущего графического состояния PsDocument.
  8. Заполните прямоугольник текущей краской.
  9. Выход из текущего состояния графики на верхний уровень.
  10. Перевести на место закрашенный прямоугольник.
  11. Обведите пунктирной линией границы того же прямоугольника над закрашенным, чтобы показать границы обрезанного залитого прямоугольника.
  12. Закройте страницу.
  13. Сохраните документ.
 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();

См. работу с клипами в документах PS в .NET.


Результат выполнения этого кода выглядит так

Вырезка

В следующем примере мы получаем шрифт, используемый для обрезки прямоугольника с синей заливкой и контуром текста.

Чтобы добавить вырезку по тексту в новый PsDocument с помощью библиотеки Aspose.Page для Java в этом примере, мы выполняем следующие шаги:

  1. Создайте выходной поток для полученного PS-файла.
  2. Создайте объект PsSaveOptions с параметрами по умолчанию.
  3. Создайте одностраничный PsDocument с уже созданным потоком вывода и сохраните параметры.
  4. Создайте новое графическое состояние.
  5. Создайте шрифт.
  6. Установите клип с текстом и шрифтом.
  7. Установите отрисовку текущего графического состояния PsDocument.
  8. Заполните прямоугольник текущей краской.
  9. Выход из текущего состояния графики на верхний уровень.
  10. Перевести на место закрашенный прямоугольник.
  11. Обведите пунктирной линией границы того же прямоугольника над закрашенным, чтобы показать границы обрезанного залитого прямоугольника.
  12. Закройте страницу.
  13. Сохраните документ.
 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();

См. работу с клипами в документах PS в .NET.


Результат запуска этого кода выглядит как

ClippingByText

Вы можете загрузить примеры и файлы данных с GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.