But how can u read image from byte array and show it in your document? If u are interested about this then u must read my other post :)
My Java code for Javascript object in alfresco:
package az.gov.supremecourt.repo.jscript;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.processor.BaseProcessorExtension;
import org.alfresco.service.cmr.repository.ContentReader;
import org.alfresco.service.cmr.repository.ContentService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import java.io.BufferedInputStream;
import java.io.InputStream;
/**
*
* @author Vasif Mustafayev
*/
public final class ScUtils extends BaseProcessorExtension {
private static Log logger = LogFactory.getLog(ScUtils.class );
/** Content Service */
private ContentService contentService;
/**
* Make ContentService aviable from spring context file
* <property name="contentService" ref="ContentService"/>
*
* @method setContentService
* @param contentService
*/
public void setContentService(ContentService contentService) {
this.contentService = contentService;
}
/**
* Get Node Content as Byte Array then encode to Base64
*
* @method getNodeByteArrayInBase64
* @param nodeRef node reference which u want get bytes
* @return nodeInBase64 string for node in Base64
*/
public String getNodeByteArrayInBase64(NodeRef nodeRef) {
String nodeInBase64 = "";
ContentReader contentReader = contentService.getReader(nodeRef, ContentModel.PROP_CONTENT);
InputStream nodeIS = new BufferedInputStream(contentReader.getContentInputStream(), 4096);
try {
byte[] nodeBytes = IOUtils.toByteArray(nodeIS);
nodeInBase64 = new String(Base64.encode(nodeBytes));
} catch (Exception e) {
if ( logger.isErrorEnabled() )
logger.error("ScUtils class : getNodeByteArrayInBase64 method : Can't get content as byte Array");
e.printStackTrace();
}
return nodeInBase64;
}
}
And registration for spring:<!-- Utils for Supreme Court --> <bean id="scUtilsScript" parent="baseJavaScriptExtension" class="az.gov.supremecourt.repo.jscript.ScUtils"> <property name="contentService" ref="ContentService" /> <property name="extensionName" value="scutils" /> </bean>
Use it simple:
var signatureNode = companyhome.childByNamePath("signatures/"+person.properties["cm:userName"]+".jpg");
var nodeContentAsBase64 = scutils.getNodeByteArrayInBase64(signatureNode.nodeRef);

like this!!!
ReplyDelete