Alfresco

How to Add Barcode to Documents in Alfresco

When the world is heading towards digitization, a barcode is no longer a new term for the enterprises. Tracking and storing information about goods, from individual items to large stocks of millions of items, barcode has provided ease and relief to the system. Barcode allows you to accurately track large stocks and also look up any single piece of merchandise in a matter of second. There are many other cases where the barcode is applied to the documents. We, at Tridhya Tech, have come up with the solution to add the barcode to the document stored in the Alfresco system.


Here is the technical approach on how to generate a barcode in Alfresco. If you want to explore the QR code, then please visit this link.
 

  1. Java action – To allow users to generate and decide where to place barcode in the document
  2. Evaluator – To show action only on PDF documents (share side class)
  3. A Java PDF library (iText) – Provides classes and functions to edit PDF documents
1.Java Action
  • Create a Java class with following code at alfresco/src/main/java
     
 public class BarcodePdfActionExecuter extends ActionExecuterAbstractBase {
      private static Log logger = LogFactory.getLog(BarcodePdfActionExecuter.class);
      private ServiceRegistry serviceRegistry;
      public static final String PARAM_PAGE_NO = "page-no";
      public void setServiceRegistry(ServiceRegistry serviceRegistry) {
            this.serviceRegistry = serviceRegistry;
}
@Override
protected void addParameterDefinitions(List paramList) {
       for (String s : new String[] {PARAM_PAGE_NO}) {
           paramList.add(new ParameterDefinitionImpl(s, DataTypeDefinition.TEXT, true, getParamDisplayLabel(s)));
       }
}
@Override
protected void executeImpl(Action action, NodeRef actionedUponNodeRef) {
       logger.debug("Page No " + action.getParameterValue(PARAM_PAGE_NO));

       String barcodeString = "abcd0001";
    
       ContentWriter writer =
 serviceRegistry.getContentService().getWriter(actionedUponNodeRef,
           ContentModel.PROP_CONTENT, true);

       
       ContentReader reader =
serviceRegistry.getContentService().getReader(actionedUponNodeRef,
       
       ContentModel.PROP_CONTENT);
       int pageNo = Integer.parseInt((String) 
action.getParameterValue(PARAM_PAGE_NO));
       try {
       PdfReader pdfReader = new PdfReader(inputStream);
       PdfStamper stamper = new PdfStamper(pdfReader, outputStream);
       PdfContentByte over = stamper.getOverContent(1);
      
       Barcode128 barcode128 = new Barcode128();
       barcode128.setCode(barcodeString);
       barcode128.setCodeType(Barcode.CODE128);
       Image code128Image = barcode128.createImageWithBarcode(over, null, null);
       code128Image.setAbsolutePosition(10,10);
       over.addImage(code128Image);
       stamper.close();
       pdfReader.close();
} catch (ContentIOException e) {
e.printStackTrace();
} catch (IOException e) {
     e.printStackTrace();
} catch (DocumentException e) {
     e.printStackTrace();
     }
   }
} 
  • Create a separate at
alfresco/src/main/amp/config/alfresco/module/${project-name}/context/ to register action class.
  
     
         
     

 
  • Create an extension module at

share/src/main/amp/config/alfresco/web-extension/site-data/extensions/ in separate or existing xml file.
 

 
     
                     icon="barcode" type="javascript" 
            label="alfresco.doclib.action.barcodePdf.label"> 
            onActionFormDialog 
            action 
            barcode-pdf  
            create 
            {node.nodeRef} 
            alfresco.doclib.action.barcodePdf.msg.success  
            alfresco.doclib.action.barcodePdf.msg.failure  
            alfresco.barcodePdf.evaluator.checkPDFFileType 
             
         
 
 
         
             
         
          
     
 
 
ID for the Repository Action that this form is associated with 
     
    

 
         
             
                     label-id="alfresco.doclib.action.barcodePdf.form.field.pageNo"> 
         
         
    

 
 

 

 
  • Create a properties file for Label at
share/src/main/amp/config/alfresco/web-extension/messages/
 alfresco.doclib.action.barcodePdf.label=Barcode Pdf
alfresco.doclib.action.barcodePdf.msg.success=Pdf have been barcoded.
alfresco.doclib.action.barcodePdf.msg.failure=Problem in barcoding Pdf, please contact Administrator
alfresco.doclib.action.barcodePdf.form.field.pageNo=Page Number 
  • You have to add images for the action icon at

share/src/main/amp/web/components/documentlibrary/actions/
 

2.Evaluator
  • Create a separate with following code at

share/src/main/amp/config/alfresco/web-extension/

 

    parent="evaluator.doclib.action.isMimetype"> 
     
         
            application/pdf  
     
 


 

3. A Java PDF library (iText)
  • iText Library

Add the following dependency to pom.xml to use this library.

 
 
    com.itextpdf 
    itextpdf 
    5.0.6 


Feel free to contact us if there is any help you need while executing this code.

Alfresco ECM Consultants

Alfresco

Alfresco ECM Consultants Unveil Secrets to Success

Mastering Alfresco Development: Essential Tips for Success in ECM Solutions" provides crucial insights and strategies for developers to excel in creating robust ECM solutions using the Alfresco platform. With essential tips and best practices, this resource is indispensable for both novice and experienced developers seeking to harness Alfresco's full potential for ECM projects.

A Preparation Guide for Alfresco Certified Engineer Test

Alfresco

A Preparation Guide for Alfresco Certified Engineer Test

This blog serves as a comprehensive preparation guide for individuals planning to take the Alfresco Certified Engineer test, offering valuable insights, resources, and tips to help them succeed in the certification exam.

Transform Your Business With Digital Enterprise Solutions

Contact us

Our Offices

INDIA AHMEDABAD, INDIA

401, One World West, Nr. Ambli T-Junction 200, S P Ring Road, Bopal, Ahmedabad, Gujarat 380058

UK
UK

Kemp House 160 City Road, London, United Kingdom EC1V 2NX

GERMANY GERMANY

Nürnberger Str. 46 90579 Langenzenn Deutschland

AUSTRALIA AUSTRALIA

Level 36 Riparian Plaza, 71 Eagle Street, Brisbane, QLD 4000

USA USA

4411 Suwanee Dam road, Bld. 300 Ste. 350 Suwanee GA, 30024

SOUTH AFRICA SOUTH AFRICA

Cube Work Space, 24 Hans Strijdom Avenue, Cape Town

UAE DUBAI, UAE

B 503 Sama Tower, Sheikh Zayed Road, United Arab Emirates