how to display a pdf on form from Document DS

Posted by hirenpatel on 28-Jul-2011 03:08

Hi All,

In Process, there is a document data slot which hold a pdf file , now i need to display this pdf file on activity of Bizlogic/Bizsolo process .

Please suggest me the way i can give view of pdf file in form itself using Ifram or  any other way.

I do not need to show as a attachment.

Thanks and Regards

Hiren

All Replies

Posted by vpandey on 23-Sep-2011 11:45

Hello Hiren,

You can have an implementation where a servlet will bring a file for you reading bytes of the file. And add below code to your activity jsp as below:

                        "  id="docIFrame" type="application/pdf"/>

Thanks

--Vikas

Posted by Wouter Dupré on 23-Sep-2011 11:46

Hi,

Thank you for your email. I'm currently out of the office. I will return on October 3. During my absence I will have no/limited access access to email. For urgent matters, call me on my mobile and leave a message, call our office, or contact Gary Calcott (gcalcott@progress.com).

Best regards,

Wouter

--

Wouter Dupré

Senior Solutions Consultant

Progress Software NV

A. Stocletlaan 202 B | B-2570 Duffel | Belgium

Office +32 (0) 15 30 77 00 | Mobile +32 (0) 478 50 00 49

Posted by prakashharisharma on 09-Mar-2012 03:14

Hi Hiren,

find code to FileServlet

/**
*
*/
package com.progress.exl.util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

//import com.bob.savvion.service.BOBBLAPIImpl;
import com.progress.exl.common.util.CommonLogger;
import com.savvion.sbm.bizlogic.server.svo.DocumentDS;
import com.savvion.sbm.bizlogic.util.Session;
import com.savvion.sbm.bizmanage.api.BizManageBean;
import com.savvion.sbm.bpmportal.bizsite.api.BizSiteBean;
import com.savvion.sbm.bpmportal.bizsite.doclets.DocReceiver;
import com.savvion.sbm.bpmportal.service.PortalDocumentService;
import com.savvion.sbm.bpmportal.util.PortalConstants;
import com.savvion.util.MimeType;
import com.savvion.sbm.dms.DSContext;
import com.savvion.sbm.dms.svo.Document;

public class FileDisplayServlet extends HttpServlet{
private static CommonLogger logger = CommonLogger.getLogger();

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
  doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
  long timestamp = System.currentTimeMillis();
  String docname = request.getParameter( "docname" );
  String mimeType = "application/pdf";

  response.setContentType(mimeType);
  String ptid = request.getParameter( "ptid" );
  String pid = request.getParameter( "pid" );


  response.setHeader("Pragma", "no-cache");
  response.setHeader("Cache-Control", "no-cache");
  response.setHeader("Cache-Control", "no-store");
  HttpSession session = request.getSession(false);
  BizManageBean bizManage = (BizManageBean)session.getAttribute( "bizManage" );

  HashMap hmap = bizManage.getDocumentDSValues(ptid,pid);
  BizSiteBean bizSite = (BizSiteBean) session.getAttribute("bizSite");
  DSContext context = null;
  context = PortalDocumentService.getDSContext(bizSite.getBizlogicSession());
  Session blSession = bizManage.getBizLogicSession();
  String sessionId = null;

  sessionId = session.getId();

  DocumentDS docDS = null;
  Document doc = null;

  for (Iterator iterator = hmap.keySet().iterator(); iterator.hasNext();) {
   String key = (String) iterator.next();

   DocumentDS ds = hmap.get(key);
   List dslist = ds.getDocumentNames();
   List doclist = ds.getDocuments();
   logger.logDebug(FileDisplayServlet.class, "doPost()", "List size : " + dslist.size() );

   if(key.equalsIgnoreCase(ServletConstants.SCANNEDIMAGE))
   {


    if( dslist.size() > 0 ) {
     String dsName = dslist.get(0);

     docDS = DocReceiver.getDocumentValue(sessionId, dsName);
     logger.logDebug(FileDisplayServlet.class, "doPost()", "ContentDispostion set");
     response.setHeader("Content-Dispostion", "inline; filename=\"" + dsName + "\";");
     response.setCharacterEncoding(PortalConstants.UTF8);


     response.setHeader("IS_THERE_FILE_NAME", "TRUE");
     for(Document docl : doclist){
      logger.logDebug(FileDisplayServlet.class, "doPost()","docName " + docl.getName());
      logger.logDebug(FileDisplayServlet.class, "doPost()","Id "+ docl.getId());

      doc = docl;

     }

     OutputStream out = response.getOutputStream();
        ByteArrayInputStream is = doc.getContent(context);
                 BufferedInputStream bis = null;
                 try {
                     int IO_BUFFER_SIZE = 1 * 1024 ;
                     int bufSize = IO_BUFFER_SIZE;
                     bis = new BufferedInputStream(is, bufSize);

                     byte[] buf = new byte[IO_BUFFER_SIZE];
                     int bytesRead = 0;
                     long tempsize=0;

                     int length= (int)doc.getSize();
                  response.setContentLength(length);
         response.setHeader("Content-disposition", "filename=" + doc.getName() );
         response.setBufferSize(20480);
                                  byte[] buffer = new byte[19456];
                                         int len;
                                         int tempLen=0;
                                  while (bis.available() != 0) {
                                      len = bis.read(buffer);
                                      tempLen += len;
                                      logger.logDebug(FileDisplayServlet.class, "doPost()", "Total length   " + length +
                                        "   buffer read "+len + "  total length readbis" + tempLen );
                                      out.write(buffer, 0, len);
                                    out.flush();
                                   response.flushBuffer();
                                      };

     }catch(IOException io){
      logger.logDebug(FileDisplayServlet.class, "doPost()","FileDisplayServlet.doPost().IOException");
      io.printStackTrace();
     }catch(Exception e){
      e.printStackTrace();
     }finally{
     /* if(output != null){
       output.close();
      }
      */
      if(out != null){

       out.close();
      }
      if (bis != null) {
                         try {
                             bis.close();
                         } catch (Exception ce) {
                             // nothing
                         }
      }
     }
    } else {
     response.setContentType( "text/html");

     PrintWriter writer = response.getWriter();
     writer.print(" There is a problem in rendering the image. Please contact Adminstrator. ");

     writer.flush();
     writer.close();

    }

   }


  }


}
}

Hope this will help you

This thread is closed