服務器端:(根據Apache POI庫函數其中SlideShow表示PPT文檔,Slide表示某一張幻燈片)
1.先把電腦中的PPT文件讀入到一個字節數組中。(輸入流-->字節數組-->輸出流-->字節數組)
FileInputStream inputStream = new FileInputStream(Path);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] byffer = new byte[1024];
int length = -1;
while ((length = is.read(byffer)) != -1) {
byteArrayOutputStream.write(byffer, 0, length);
}
byteArrayOutputStream.close();
byte[] fileBuffer = byteArrayOutputStream.toByteArray();
2.創建SlideShow(把PPT輸入流轉爲SlideShow)
(Apache POI庫函數SlideShow(java.io.InputStream inputStream)Constructs a Powerpoint document from an input stream.
)
FileInputStream inputStream = new FileInputStream(Path);
SlideShow ppt = new SlideShow(is);
如果是pptx格式的PPT,則,XMLSlideShow pptx = new XMLSlideShow(is);
3.獲取幻燈片數組
Slide slide = ppt.getSlides();
如果是pptx格式的PPT,則,XSLFSlide slidePPTx = pptx.getSlides();
4.使用batik操作SVG圖片(生成DOM樹)
DOMImplementation domImpl = SVGDOMImplementation.getDOMImplementation();
Document doc = domImpl.createDocument("http://www.w3.org/2000/svg", "svg", null);
5.渲染doc (Document 爲存放PPT或pptx的XML數據結構)
SVGGraphics2D graphics = new SVGGraphics2D(doc);
graphics.setSVGCanvasSize( pgsize);
graphics.setPaint(Color.white);
slide[currentPage - 1].draw(graphics);
Element svgRoot = doc.getDocumentElement();
graphics.getRoot(svgRoot);
6.在畫布中展示PPT轉化爲的SVG圖片
JSVGCanvas _svgCanvas = new JSVGCanvas();
_svgCanvas.setDocument(doc);