जावा में PowerPoint में आकृतियों को कैसे जोड़ें
Aspose.Slides FOSS for Java प्रस्तुति स्लाइड्स में AutoShapes, Tables, Connectors, और PictureFrames जोड़ने का समर्थन करता है। सभी shape प्रकार slide.getShapes() संग्रह के माध्यम से जोड़े जाते हैं।
चरण-दर-चरण गाइड
चरण 1: Maven निर्भरता जोड़ें
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>चरण 2: प्रस्तुति बनाएं
संसाधनों को प्रबंधित करने के लिए हमेशा try-with-resources का उपयोग करें।
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
// ... add shapes ...
prs.save("output.pptx", SaveFormat.PPTX);
}चरण 3: एक AutoShape जोड़ें
slide.getShapes().addAutoShape(shapeType, x, y, width, height) दिए गए स्थिति और आकार (सभी पॉइंट्स में) पर एक आकार रखता है। आकार चुनने के लिए ShapeType स्थिरांक का उपयोग करें।
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
// Rectangle
IAutoShape rect = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 300, 100
);
rect.addTextFrame("Rectangle shape");
// Ellipse
IAutoShape ellipse = slide.getShapes().addAutoShape(
ShapeType.ELLIPSE, 400, 50, 200, 100
);
ellipse.addTextFrame("Ellipse shape");
prs.save("autoshapes.pptx", SaveFormat.PPTX);
}चरण 4: तालिका जोड़ें
slide.getShapes().addTable(x, y, colWidths, rowHeights) निर्दिष्ट स्थिति पर एक तालिका बनाता है। कॉलम चौड़ाइयाँ और पंक्ति ऊँचाइयाँ बिंदु मानों के एरे होते हैं।
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
double[] colWidths = {150.0, 150.0, 150.0};
double[] rowHeights = {40.0, 40.0, 40.0};
ITable table = slide.getShapes().addTable(50, 200, colWidths, rowHeights);
// Set header row text
String[] headers = {"Product", "Units", "Revenue"};
for (int col = 0; col < headers.length; col++) {
table.getRows().get(0).get(col).getTextFrame().setText(headers[col]);
}
// Set data rows
String[][] rows = {
{"Widget A", "120", "$2,400"},
{"Widget B", "85", "$1,700"},
};
for (int row = 0; row < rows.length; row++) {
for (int col = 0; col < rows[row].length; col++) {
table.getRows().get(row + 1).get(col)
.getTextFrame().setText(rows[row][col]);
}
}
prs.save("table.pptx", SaveFormat.PPTX);
}चरण 5: कनेक्टर जोड़ें
कनेक्टर दो आकारों को दृश्य रूप से जोड़ते हैं। पहले आकार बनाएं, फिर एक कनेक्टर जोड़ें और उसके प्रारंभ और अंत कनेक्शन बिंदु सेट करें।
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
IAutoShape box1 = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 100, 150, 60
);
box1.addTextFrame("Start");
IAutoShape box2 = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 350, 100, 150, 60
);
box2.addTextFrame("End");
IConnector conn = slide.getShapes().addConnector(
ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10
);
conn.setStartShapeConnectedTo(box1);
conn.setStartShapeConnectionSiteIndex(3); // right side of box1
conn.setEndShapeConnectedTo(box2);
conn.setEndShapeConnectionSiteIndex(1); // left side of box2
prs.save("connector.pptx", SaveFormat.PPTX);
}एक आयत के लिए कनेक्शन साइट सूचकांक 0‑3 तक क्रमांकित होते हैं: शीर्ष=0, बायाँ=1, नीचे=2, दायाँ=3।
चरण 6: एक चित्र फ्रेम जोड़ें
एक छवि एम्बेड करें और उसे स्लाइड में PictureFrame के रूप में जोड़ें। पहले छवि बाइट्स पढ़ें, उन्हें प्रस्तुति की इमेज कलेक्शन में जोड़ें, फिर फ्रेम बनाएं।
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Paths;
try (Presentation prs = new Presentation()) {
byte[] imageData = Files.readAllBytes(Paths.get("logo.png"));
IPPImage image = prs.getImages().addImage(imageData);
ISlide slide = prs.getSlides().get(0);
slide.getShapes().addPictureFrame(
ShapeType.RECTANGLE, // bounding shape type
50, 50, // x, y in points
200, 150, // width, height in points
image
);
prs.save("with-image.pptx", SaveFormat.PPTX);
}सामान्य समस्याएँ और समाधान
आकार दृश्यमान स्लाइड क्षेत्र के बाहर दिखाई देता है
स्लाइड्स डिफ़ॉल्ट रूप से 720 × 540 पॉइंट्स होते हैं। x या y के मान यदि इन सीमाओं से बाहर हों तो आकार स्लाइड के बाहर चला जाता है। x < 720 और y < 540 को रखें, और x + width <= 720 और y + height <= 540 को सुनिश्चित करें।
NullPointerException आकार पाठ पढ़ते समय
addAutoShape() सीधे shape ऑब्जेक्ट लौटाता है। यदि आप null देखते हैं, तो जांचें कि आप रिटर्न वैल्यू को त्याग नहीं रहे हैं। साथ ही, टेक्स्ट पढ़ने से पहले यह सत्यापित करें कि getTextFrame() null नहीं है।
टेबल सेल टेक्स्ट असाइनमेंट के बाद खाली है
सही विधि है .getTextFrame().setText(value)। सेल्स को इस रूप में एक्सेस करें table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value")।
अक्सर पूछे जाने वाले प्रश्न
मैं एक स्लाइड में कितनी आकृतियाँ जोड़ सकता हूँ?
कोई लाइब्रेरी‑निर्धारित सीमा नहीं है। व्यावहारिक सीमाएँ फ़ाइल आकार और आपके लक्ष्य PPTX व्यूअर की रेंडरिंग क्षमता पर निर्भर करती हैं।
क्या मैं इसे जोड़ने के बाद किसी आकार की स्थिति बदल सकता हूँ?
हाँ। addAutoShape() द्वारा लौटाए गए shape ऑब्जेक्ट में getShapeFrame() के माध्यम से position और size प्रॉपर्टीज़ होती हैं।
क्या चार्ट समर्थित हैं?
नहीं। चार्ट, स्मार्टआर्ट, और OLE ऑब्जेक्ट्स इस संस्करण में लागू नहीं किए गए हैं और UnsupportedOperationException उत्पन्न करते हैं।