Lavorare con le forme vettoriali nei documenti PostScript (PS) in Java
Disegna, riempi, traccia il contorno e trasforma forme e grafica vettoriali 2D nei documenti PostScript (PS/EPS) utilizzando Aspose.Page per Java. Crea grafiche vettoriali avanzate a livello di codice eseguendo il rendering di primitive geometriche, tra cui linee, rettangoli, ellissi, archi, poligoni e curve di Bézier complesse, con controllo completo sui tratti, sui riempimenti a tinta unita e con sfumatura, sulle aree di ritaglio e sulle trasformazioni affini delle coordinate.
Aspose.Page per Java sfrutta gli oggetti Java standard java.awt.Shape insieme alla sua API di alto livello PsDocument per disegnare primitive vettoriali direttamente nei flussi di esecuzione PostScript.
- Per tracciare il contorno di una forma geometrica utilizzando le impostazioni attive di pittura e tratto, utilizzare
PsDocument.draw(Shape) - Per riempire l’interno di una forma con colori a tinta unita, texture o riempimenti sfumati, utilizzare
PsDocument.fill(Shape). - Per creare percorsi vettoriali complessi composti da più segmenti utilizzando linee e curve di Bézier, utilizzare il metodo
java.awt.geom.Path2D. - Per applicare trasformazioni matriciali di traslazione, ridimensionamento, rotazione e inclinazione alla grafica, utilizzare il metodo
PsDocument.transform(). - Per limitare le operazioni di rendering all’interno di un limite vettoriale chiuso arbitrario, utilizzare
PsDocument.clip(Shape).
Disegnare e riempire primitive di base (rettangoli ed ellissi)
Eseguire il rendering di primitive geometriche di base con colori del contorno personalizzati e riempimenti a tinta unita.
import com.aspose.page.eps.PsDocument;
import com.aspose.page.eps.device.PsSaveOptions;
import java.awt.Color;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.io.FileOutputStream;
public class DrawBasicShapesInPS {
public static void main(String[] args) throws Exception {
// Initialize output stream and PS document
FileOutputStream outStream = new FileOutputStream("C:/PSProject/Output/basic_shapes.ps");
PsSaveOptions options = new PsSaveOptions();
PsDocument document = new PsDocument(outStream, options, 1);
document.openPage(null);
// Draw an outlined rectangle
document.setPaint(Color.BLUE);
Rectangle2D rectangle = new Rectangle2D.Float(100, 100, 200, 100);
document.draw(rectangle);
// Fill an ellipse with a solid color
document.setPaint(Color.RED);
Ellipse2D ellipse = new Ellipse2D.Float(100, 250, 200, 100);
document.fill(ellipse);
// Close page and save document
document.closePage();
document.save();
outStream.close();
System.out.println("Basic shapes drawn and saved to PostScript document.");
}
}Creare percorsi e curve vettoriali complesse
Crea percorsi composti da più segmenti, stelle o poligoni personalizzati utilizzando Path2D.Float di Java ed esegui il relativo rendering in PostScript.
import com.aspose.page.eps.PsDocument;
import com.aspose.page.eps.device.PsSaveOptions;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.geom.Path2D;
import java.io.FileOutputStream;
public class DrawComplexPathsInPS {
public static void main(String[] args) throws Exception {
FileOutputStream outStream = new FileOutputStream("C:/PSProject/Output/complex_path.ps");
PsSaveOptions options = new PsSaveOptions();
PsDocument document = new PsDocument(outStream, options, 1);
document.openPage(null);
// Create a star-shaped path using Path2D
Path2D path = new Path2D.Float();
path.moveTo(150, 100);
path.lineTo(180, 180);
path.lineTo(260, 180);
path.lineTo(195, 225);
path.lineTo(220, 300);
path.lineTo(150, 250);
path.lineTo(80, 300);
path.lineTo(105, 225);
path.lineTo(40, 180);
path.lineTo(120, 180);
path.closePath();
// Configure stroke thickness and fill color
document.setStroke(new BasicStroke(3.0f));
document.setPaint(Color.ORANGE);
document.fill(path);
document.setPaint(Color.BLACK);
document.draw(path);
document.closePage();
document.save();
outStream.close();
System.out.println("Complex vector path rendered successfully.");
}
}Applicare trasformazioni e stati grafici
Ruota, ridimensiona e trasla le forme vettoriali utilizzando trasformazioni affini all’interno degli stati grafici PostScript (writeGraphicsSave/writeGraphicsRestore).
import com.aspose.page.eps.PsDocument;
import com.aspose.page.eps.device.PsSaveOptions;
import java.awt.Color;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.io.FileOutputStream;
public class TransformedShapesInPS {
public static void main(String[] args) throws Exception {
FileOutputStream outStream = new FileOutputStream("C:/PSProject/Output/transformed_shapes.ps");
PsSaveOptions options = new PsSaveOptions();
PsDocument document = new PsDocument(outStream, options, 1);
document.openPage(null);
// Save graphics state
document.writeGraphicsSave();
// Apply rotation (45 degrees) and translation
AffineTransform transform = new AffineTransform();
transform.translate(200, 200);
transform.rotate(Math.toRadians(45));
document.transform(transform);
// Draw square at transformed position
document.setPaint(Color.MAGENTA);
document.fill(new Rectangle2D.Float(-50, -50, 100, 100));
// Restore graphics state
document.writeGraphicsRestore();
document.closePage();
document.save();
outStream.close();
System.out.println("Transformed shapes successfully saved to PS file.");
}
}Installazione e configurazione
Aggiungi Aspose.Page per Java al tuo Maven:
Package Manager Console Command
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-page</artifactId>
<version>Latest</version>
</dependency>
FAQ
1. Posso utilizzare direttamente le istanze native Java AWT Shape con PsDocument?
Sì. Aspose.Page for Java accetta nativamente qualsiasi implementazione standard di java.awt.Shape, come Rectangle2D, Ellipse2D, Line2D, RoundRectangle2D o Path2D, direttamente nelle chiamate draw() e fill().
2. Come posso applicare stili di tratto come linee tratteggiate o punteggiate alle forme?
Configura un tratto personalizzato tramite document.setStroke(new BasicStroke(width, cap, join, miterlimit, dashArray, dashPhase)) prima di chiamare document.draw().
3. Aspose.Page supporta riempimenti con sfumature lineari e radiali per le forme PostScript?
Sì. È possibile passare istanze di implementazioni di paint con sfumatura, come java.awt.LinearGradientPaint o java.awt.RadialGradientPaint, a document.setPaint() per eseguire il rendering di riempimenti sfumati sulle forme vettoriali.