Author: solomax
Date: Mon Dec 31 03:19:53 2012
New Revision: 1427040

URL: http://svn.apache.org/viewvc?rev=1427040&view=rev
Log:
Whiteboard export: Save as SVG and JPG somehow works

Modified:
    
incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/mainMethods.lzx
    
incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/conference/conferenceMenubar.lzx
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/ExportToImage.java

Modified: 
incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/mainMethods.lzx
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/mainMethods.lzx?rev=1427040&r1=1427039&r2=1427040&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/mainMethods.lzx 
(original)
+++ 
incubator/openmeetings/trunk/singlewebapp/WebContent/src/base/mainMethods.lzx 
Mon Dec 31 03:19:53 2012
@@ -96,13 +96,12 @@
     <confmenucommand id="cmd_coBrowser" actionCommand="browser_open" 
key="['control','b']"/> 
      -->
    
-    <!--  
-       There is no image export at the moment
-    <confmenucommand id="cmd_exportFilePNG" 
onselect="canvas.doWhiteboardActionmenu('exportFilePNG')" />
-    <confmenucommand id="cmd_exportFileJPG" 
onselect="canvas.doWhiteboardActionmenu('exportFileJPG')" />
-    <confmenucommand id="cmd_exportFilePDF" 
onselect="canvas.doWhiteboardActionmenu('exportFilePDF')" />
-    <confmenucommand id="cmd_exportFileSVG" 
onselect="canvas.doWhiteboardActionmenu('exportFileSVG')" />
-    <confmenucommand id="cmd_exportFileTIF" 
onselect="canvas.doWhiteboardActionmenu('exportFileTIF')" />
+    <confmenucommand id="cmd_exportFilePNG" 
onselect="canvas.doWhiteboardActionmenu('exportFilePNG')" tipLabelId="1489" />
+    <confmenucommand id="cmd_exportFileJPG" 
onselect="canvas.doWhiteboardActionmenu('exportFileJPG')" tipLabelId="1489" />
+    <confmenucommand id="cmd_exportFileSVG" 
onselect="canvas.doWhiteboardActionmenu('exportFileSVG')" tipLabelId="1489" />
+    <!-- 
+    <confmenucommand id="cmd_exportFilePDF" 
onselect="canvas.doWhiteboardActionmenu('exportFilePDF')" tipLabelId="1489" />
+    <confmenucommand id="cmd_exportFileTIF" 
onselect="canvas.doWhiteboardActionmenu('exportFileTIF')" tipLabelId="1489" />
      -->
     
     <attribute name="colorArray" value="null" />

Modified: 
incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/conference/conferenceMenubar.lzx
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/conference/conferenceMenubar.lzx?rev=1427040&r1=1427039&r2=1427040&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/conference/conferenceMenubar.lzx
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/conference/conference/conferenceMenubar.lzx
 Mon Dec 31 03:19:53 2012
@@ -257,7 +257,12 @@
             <horizontalDropDownSpacer />
                        <conferencDropDownMenuItem labelid="1126" 
command="cmd_editWhiteboardDefault" 
                                                 enabled="true"/>
-                               
+                       <!-- Save Whiteboard as Image menues are commented for 
now
+            <horizontalDropDownSpacer />
+                       <conferencDropDownMenuItem labelid="560" 
command="cmd_exportFileSVG" enabled="true"/>
+                       <conferencDropDownMenuItem labelid="561" 
command="cmd_exportFilePNG" enabled="true"/>
+                       <conferencDropDownMenuItem labelid="562" 
command="cmd_exportFileJPG" enabled="true"/>
+                       -->
                </view>
                
        </class>

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/ExportToImage.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/ExportToImage.java?rev=1427040&r1=1427039&r2=1427040&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/ExportToImage.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/servlet/outputhandler/ExportToImage.java
 Mon Dec 31 03:19:53 2012
@@ -19,10 +19,10 @@
 package org.apache.openmeetings.servlet.outputhandler;
 
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.io.Writer;
 import java.util.Date;
 import java.util.List;
 
@@ -34,6 +34,9 @@ import javax.servlet.http.HttpServletRes
 import org.apache.batik.dom.GenericDOMImplementation;
 import org.apache.batik.dom.svg.SVGDOMImplementation;
 import org.apache.batik.svggen.SVGGraphics2D;
+import org.apache.batik.transcoder.TranscoderInput;
+import org.apache.batik.transcoder.TranscoderOutput;
+import org.apache.batik.transcoder.image.JPEGTranscoder;
 import org.apache.openmeetings.OpenmeetingsVariables;
 import org.apache.openmeetings.batik.beans.PrintBean;
 import org.apache.openmeetings.data.basic.Sessionmanagement;
@@ -104,8 +107,7 @@ public class ExportToImage extends HttpS
         * , javax.servlet.http.HttpServletResponse)
         */
        @Override
-       protected void service(HttpServletRequest httpServletRequest,
-                       HttpServletResponse httpServletResponse) throws 
ServletException,
+       protected void service(HttpServletRequest request, HttpServletResponse 
response) throws ServletException,
                        IOException {
 
                try {
@@ -114,24 +116,24 @@ public class ExportToImage extends HttpS
                                return;
                        }
 
-                       String sid = httpServletRequest.getParameter("sid");
+                       String sid = request.getParameter("sid");
                        if (sid == null) {
                                sid = "default";
                        }
                        log.debug("sid: " + sid);
 
-                       String hash = httpServletRequest.getParameter("hash");
+                       String hash = request.getParameter("hash");
                        if (hash == null) {
                                hash = "";
                        }
                        log.debug("hash: " + hash);
 
-                       String fileName = 
httpServletRequest.getParameter("fileName");
+                       String fileName = request.getParameter("fileName");
                        if (fileName == null) {
                                fileName = "file_xyz";
                        }
 
-                       String exportType = 
httpServletRequest.getParameter("exportType");
+                       String exportType = request.getParameter("exportType");
                        if (exportType == null) {
                                exportType = "svg";
                        }
@@ -180,64 +182,38 @@ public class ExportToImage extends HttpS
                                // Finally, stream out SVG to the standard 
output using
                                // UTF-8 encoding.
                                boolean useCSS = true; // we want to use CSS 
style attributes
-                               // Writer out = new 
OutputStreamWriter(System.out, "UTF-8");
 
-                               if (exportType.equals("svg")) {
-                                       // OutputStream out = 
httpServletResponse.getOutputStream();
-                                       // 
httpServletResponse.setContentType("APPLICATION/OCTET-STREAM");
-                                       // 
httpServletResponse.setHeader("Content-Disposition","attachment; filename=\""
-                                       // + requestedFile + "\"");
-                                       Writer out = 
httpServletResponse.getWriter();
-
-                                       svgGenerator.stream(out, useCSS);
-
-                               } else if (exportType.equals("png") || 
exportType.equals("jpg")
+                               File uploadTempDir = 
OmFileHelper.getUploadTempDir();
+                               log.debug("working_dir: " + uploadTempDir);
+                               String reqFilePrefix = fileName + "_" + 
CalendarPatterns.getTimeForStreamId(new Date());
+                               File svgFile = new File(uploadTempDir, 
reqFilePrefix + ".svg");
+                               log.debug("exported svg file: " + 
svgFile.getCanonicalPath());
+                               FileWriter out = new FileWriter(svgFile);
+                               svgGenerator.stream(out, useCSS);
+                               out.flush();
+                               out.close();
+                               File expFile = new File(uploadTempDir, 
reqFilePrefix + "." + exportType);
+                               log.debug("exported file: " + 
expFile.getCanonicalPath());
+                               if ("svg".equals(exportType)) {
+                                       outFile(response, expFile);
+                               } else if ("jpg".equals(exportType)) {
+                                       JPEGTranscoder t = new JPEGTranscoder();
+                               
t.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, 1f);
+                               
+                               OutputStream ostream = new 
FileOutputStream(expFile);
+                               TranscoderOutput output = new 
TranscoderOutput(new FileOutputStream(expFile));
+
+                               // Perform the transcoding.
+                               t.transcode(new 
TranscoderInput(svgFile.toURI().toString()), output);
+                               ostream.flush();
+                               ostream.close();
+                               
+                                       outFile(response, expFile);
+                               } else if (exportType.equals("png")
                                                || exportType.equals("gif") || 
exportType.equals("tif")
                                                || exportType.equals("pdf")) {
-
-                                       File uploadTempDir = 
OmFileHelper.getUploadTempDir();
-
-                                       String requestedFileSVG = fileName + "_"
-                                                       + 
CalendarPatterns.getTimeForStreamId(new Date())
-                                                       + ".svg";
-                                       String resultFileName = fileName + "_"
-                                                       + 
CalendarPatterns.getTimeForStreamId(new Date())
-                                                       + "." + exportType;
-
-                                       log.debug("working_dir: " + 
uploadTempDir);
-                                       log.debug("requestedFileSVG: " + 
requestedFileSVG);
-                                       log.debug("resultFileName: " + 
resultFileName);
-
-                                       File svgFile = new File(uploadTempDir, 
requestedFileSVG);
-                                       File resultFile = new 
File(uploadTempDir, resultFileName);
-
-                                       log.debug("svgFile: " + 
svgFile.getCanonicalPath());
-                                       log.debug("resultFile: " + 
resultFile.getCanonicalPath());
-                                       log.debug("svgFile P: " + 
svgFile.getPath());
-                                       log.debug("resultFile P: " + 
resultFile.getPath());
-
-                                       FileWriter out = new 
FileWriter(svgFile);
-                                       svgGenerator.stream(out, useCSS);
-
-                                       httpServletResponse.reset();
-                                       httpServletResponse.resetBuffer();
-                                       OutputStream outStream = 
httpServletResponse
-                                                       .getOutputStream();
-                                       httpServletResponse
-                                                       
.setContentType("APPLICATION/OCTET-STREAM");
-                                       
httpServletResponse.setHeader("Content-Disposition",
-                                                       "attachment; 
filename=\"" + resultFileName + "\"");
-                                       
httpServletResponse.setHeader("Content-Length",
-                                                       "" + 
resultFile.length());
-
-                                       OmFileHelper.copyFile(resultFile, 
outStream);
-                                       outStream.close();
-
-                                       out.flush();
-                                       out.close();
-
+                                               //TODO not implemented yet
                                }
-
                        }
 
                } catch (Exception er) {
@@ -246,4 +222,17 @@ public class ExportToImage extends HttpS
                        er.printStackTrace();
                }
        }
+       
+       private void outFile(HttpServletResponse response, File f) throws 
IOException {
+               response.reset();
+               response.resetBuffer();
+               OutputStream outStream = response.getOutputStream();
+               response.setContentType("APPLICATION/OCTET-STREAM");
+               response.setHeader("Content-Disposition", "attachment; 
filename=\"" + f.getName() + "\"");
+               response.setHeader("Content-Length", "" + f.length());
+
+               OmFileHelper.copyFile(f, outStream);
+               outStream.close();
+       }
+       
 }


Reply via email to