Generate Barcodes in PDF document - Apache PDFBox example

Generate Barcodes in PDF document - Apache PDFBox example

import java.awt.image.BufferedImage;
import java.util.HashMap;
import java.util.Map;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.image.JPEGFactory;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.krysalis.barcode4j.impl.code128.Code128Bean;
import org.krysalis.barcode4j.impl.code39.Code39Bean;
import org.krysalis.barcode4j.impl.pdf417.PDF417Bean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageConfig;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

public class PDFBarcode {

 public static void main(String[] args) {

  try {

   // Creating PDF document object 
   String myPDF = "docs/barcode_doc.pdf";
   PDDocument document = new PDDocument();

   PDPage page = new PDPage(PDRectangle.LETTER);
   document.addPage(page);

   float margin = 25;
   float y = 700;

   // add CODE 128 Barcode
   addBarcode128(document, page, "123456789", margin, y);

   // add CODE 39 Barcode
   y = y - 100;
   addBarcode39(document, page, "123456789", margin, y);

   // 2D Barcode format PDF417 
   y = 700;
   addBarcodePdf417(document, page, "123456789", margin + 300, y);

   // add QRCode 
   y = y - 100;
   addQRCode(document, page, "https://www.mysamplecode.com", margin + 300, y);

   // Saving the document
   document.save(myPDF);
   // Closing the document  
   document.close();


  } 
  catch (Exception e) {
   e.printStackTrace();
  }

 }

 private static void addBarcode128(PDDocument document, PDPage page, String text, float x, float y) {

  try {


   PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true);

   int dpi = 300;
   BitmapCanvasProvider canvas = new BitmapCanvasProvider(dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0);
   Code128Bean code128Bean = new Code128Bean(); 
   code128Bean.generateBarcode(canvas, text.trim());
   canvas.finish();
   BufferedImage bImage = canvas.getBufferedImage();

   PDImageXObject image = JPEGFactory.createFromImage(document, bImage);
   contentStream.drawImage(image, x, y, 100, 50);
   contentStream.close();


  } 
  catch (Exception e) {
   e.printStackTrace();
  }

 }

 private static void addBarcode39(PDDocument document, PDPage page, String text, float x, float y) {

  try {


   PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true);

   int dpi = 300;
   BitmapCanvasProvider canvas = new BitmapCanvasProvider(dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0);
   Code39Bean code39Bean = new Code39Bean(); 
   code39Bean.generateBarcode(canvas, text.trim());
   canvas.finish();
   BufferedImage bImage = canvas.getBufferedImage();

   PDImageXObject image = JPEGFactory.createFromImage(document, bImage);
   contentStream.drawImage(image, x, y, 100, 50);
   contentStream.close();


  } 
  catch (Exception e) {
   e.printStackTrace();
  }

 }

 private static void addBarcodePdf417(PDDocument document, PDPage page, String text, float x, float y) {

  try {


   PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true);

   int dpi = 300;
   BitmapCanvasProvider canvas = new BitmapCanvasProvider(dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0);
   PDF417Bean pdf417Bean = new PDF417Bean(); 
   pdf417Bean.generateBarcode(canvas, text.trim());
   canvas.finish();
   BufferedImage bImage = canvas.getBufferedImage();

   PDImageXObject image = JPEGFactory.createFromImage(document, bImage);
   contentStream.drawImage(image, x, y, 100, 50);
   contentStream.close();


  } 
  catch (Exception e) {
   e.printStackTrace();
  }

 }

 private static void addQRCode(PDDocument document, PDPage page, String text, float x, float y) {

  try {


   PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true);

   Map hintMap = new HashMap();
   hintMap.put(EncodeHintType.MARGIN, 0);
   hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);

   BitMatrix matrix = new MultiFormatWriter().encode(
     new String(text.getBytes("UTF-8"), "UTF-8"),
     BarcodeFormat.QR_CODE, 100, 100, hintMap);

   MatrixToImageConfig config = new MatrixToImageConfig(0xFF000001, 0xFFFFFFFF);
   BufferedImage bImage = MatrixToImageWriter.toBufferedImage(matrix, config);
   PDImageXObject image = JPEGFactory.createFromImage(document, bImage);
   contentStream.drawImage(image, x, y, 75, 75);
   contentStream.close();


  } 
  catch (Exception e) {
   e.printStackTrace();
  }

 }


}

No comments:

Post a Comment

NO JUNK, Please try to keep this clean and related to the topic at hand.
Comments are for users to ask questions, collaborate or improve on existing.