Önceki blog gönderimizde, [Java ile Microsoft PowerPoint PPTX dosyası oluşturma ve güncelleme] için Apache POI XSLF API’sini araştırmıştık. Java için Apache POI, PPT ve PPTX dosyalarıyla, bunların dahili dosya biçimi ayrıntılarına girmeden, Java uygulamalarınızın içinden çalışmanıza olanak tanır. Bu yazıda, Java ile PPTX’e resim eklemek için Apache POI API’nin nasıl kullanılabileceğinin ayrıntılarını inceleyeceğiz. Ayrıca Java kullanarak bir PPTX dosyasındaki görüntü bilgilerinin nasıl okunacağına da bir göz atacağız.
sistem gereksinimleri
Başlamadan önce sisteminizin aşağıdaki gereksinimleri karşıladığından emin olun.
- JDK – Java SE 2 JDK 1.5 veya üzeri
- Bellek – 1 GB Ram
- İşletim Sistemi – Windows/ Linux/ Mac OS
Java için Apache POI’yi yükleme
Uygulamanızda Apache POI kitaplığıyla çalışmak için Eclipse, IntelliJ IDEA veya rahat ettiğiniz başka bir IDE gibi bir Java geliştirme ortamına ihtiyacınız olacak. Sonraki adım, aşağıda gösterildiği gibi uygulamanızın pom.xml dosyasına Apache POI Maven bağımlılığını eklemektir.
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.23.0</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
PPTX Dosyasına Resim Eklemek için Java Kitaplığı
Bu aşamada geliştirme ortamınızın hazır olduğunu varsayıyoruz ve PowerPoint sunum dosyasına görsel ekleme kodunu yazmaya başlayabiliriz. Bu, XSLFSlide sınıfının createPicture() yöntemi kullanılarak elde edilir. PowerPoint’te bir slayda resim eklemek aşağıdaki adımları içerir.
- XMLSlideShow sınıfının bir örneğini oluşturun
- adımdaki sunum örneğinde createSlide yöntemini çağırarak sunuma slayt ekleyin
- Görüntüyü dosyadan bayt dizisi olarak yükleyin ve XSLFPictureData örneğine ekleyin
- Slayt örneğinde createPicture yöntemini çağırın
- Sunuyu çıktıya kaydet
Aşağıdaki kod örneği bu adımları göstermektedir.
//creating a presentation
XMLSlideShow pptx = new XMLSlideShow();
//creating a slide in it
XSLFSlide slide = pptx.createSlide();
//reading an image
File image = new File("fileformat.png");
//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
//adding the image to the presentation
XSLFPictureData idx = pptx.addPicture(picture, PictureType.PNG);
//creating a slide with given picture on it
XSLFPictureShape pic = slide.createPicture(idx);
//creating a file object
File file = new File("imagetopresentation.pptx");
FileOutputStream out = new FileOutputStream(file);
//saving the changes to a file
pptx.write(out);
out.close();
PPTX Dosyasından Görüntü Bilgilerini Okuyun
Java için Apache POI API ile, XMLSlideShow sınıfının getPictureData() yöntemini kullanarak bir PPTX dosyası içindeki tüm görüntülerin verilerini okuyabilirsiniz. Aşağıdaki örnek kod, bir sunumdaki görüntüleri okuyarak bu işlevselliği gösterir.
//open an existing presentation
File file = new File("imagetopresentation.pptx");
XMLSlideShow pptx = new XMLSlideShow(new FileInputStream(file));
//reading all the images from the presentation
for(XSLFPictureData data : pptx.getPictureData()){
byte[] bytes = data.getData();
String fileName = data.getFileName();
PictureType pictureFormat = data.getType();
System.out.println("picture name: " + fileName);
System.out.println("picture format: " + pictureFormat);
}
//saving the changes to a file
FileOutputStream out = new FileOutputStream(file);
pptx.write(out);
out.close();
Çözüm
PowerPoint sunum dosyalarıyla çalışmaya yönelik Apache POI bileşenleri, Java uygulamanızın içinden PowerPoint PPT ve PPTX dosyalarına görüntüler eklemenizi sağlar. Ayrıca slaytlardaki resimlerden resim bilgilerini okumanıza da olanak tanır. Gelecek bloglarımızda, PowerPoint sunumlarıyla çalışmak için Apache POI Java bileşenlerinin kullanımını daha ayrıntılı olarak göstereceğiz. O yüzden bizi izlemeye devam edin.