BarCodeWiz Logo

PDF 417 Barcodes in Crystal Reports

PDF 417 Barcodes in Crystal Reports

  • This tutorial shows how to add PDF 417 barcodes to your Crystal Reports projects.

Step 1. Add a new formula

  • In the Field Explorer, right-click Formula Fields and click New...

  • Enter a name for the new formula.

Step 2. Verify the Data Matrix functions


Step 3. Copy the formula text

Copy the contents of this text into the Formula Editor.:

 

  // This is the text you wish to encode. Replace "Hello..." with your own data.
  // For example: stringVar barcodeInput := {my_data_table.item_text}; 
  // 
  // If your data is a number or date, it must be converted to string using the ToText() function.
  // For example: local stringVar barcodeInput := ToText( {my_data_table.item_text}, 0, ""); 
local stringVar barcodeInput := "Hello World 헬로월드 Witaj świecie";


  // Set to true to create a smaller version of PDF417. Removes the right-most column.
booleanVar isCompact := false; 

 
//   Error correction level allows a partially damaged barcode to be scanned successfully.
//   Valid values are 0-9, Value of 0 means Auto.
numberVar errorCorrectionLevel := 0;

  // Number of daa columns to create. Use fewer columns for taller PDF 417 symbols.
  // Minimum: 1, Maximum: 30 columns.
numberVar numDataColumns := 2;


  // Height of each row, in relation to width of a dot.
  // Minimum 2, Maximum: 10.
numberVar rowHeight := 2;

  // Allows input of special characters in format ^000 where 000 is decimal ASCII code. 
  // For example, ABC^009123^013^010 encodes "ABC[TAB]123[CARRIAGE RETURN][LINE FEED]".
  // To encode the actual caret ^, enter it twice: ^^
  // To encode FNC1, enter: ^F1
booleanVar allowSpecialChars := true; 

           
  // Thickness of quiet zone (space around barcode), in number of modules.
  // Note: Minimum quiet zone is 1 module. If you add a border (borderWidth > 0), ensure quietZoneWidth is 1 or larger.
  // Default value is 0 (no quiet zone).
numberVar quietZoneWidth := 0;       

  // Thickness of border around barcode, in number of modules.
  // If using a border, ensure quietZoneWidth is 1 or larger.
numberVar borderWidth := 0;            

 // Character encoding of your data input.
 // For example: UTF-8 | UTF-16 | ISO-8859-1 | ISO-8859-3 | ISO-2022-JP-2 
 // This setting should be set to UTF-16 (Unicode) for Crystal Reports 9 and newer
 // Crystal Reports automatically converts all input (from database fields, strings, etc) into UTF-16.
local stringVar characterInputEncoding := "UTF-16";

 // Character encoding for data encoded in the PDF 417 symbol. 
 // The recommended setting is UTF-8, which is the default for the majority of barcode scanners.
 // If you change the setting, be sure the scanner understands it.
local stringVar characterOutputEncoding := "UTF-8";


local numberVar strLen := Length(barcodeInput);
local stringVar hex;
local stringVar xvals := "0123456789ABCDEF";
local numberVar i;
For i := 1 to strLen Do
(
    local numberVar num := AscW(Mid(barcodeInput, i, 1));
    local numberVar first := Remainder( num,  256);
    local numberVar sec := Int( num / 256);

    hex := hex + Mid(xvals, Int(first/16) + 1, 1) + 
                 Mid(xvals, Remainder(first, 16) + 1, 1) + 
                 Mid(xvals, Int(sec/16) + 1, 1) + 
                 Mid(xvals, Remainder(sec, 16) + 1, 1);
);

local stringVar fullBarcode := "";
local numberVar partNumber := 0;


Do (
  local stringVar result := Pdf417EncodeFromHex(partNumber, hex, isCompact, errorCorrectionLevel, numDataColumns, rowHeight, allowSpecialChars, 
                                            quietZoneWidth, borderWidth, characterInputEncoding, characterOutputEncoding);
  fullBarcode := fullBarcode + result;
  partNumber := partNumber + 1;
)
While result <> "";

fullBarcode;

 


Step 4. Edit the formula

Replace "Hello..." with your own data.


Click Save and Close.


Step 5. Add a barcode to the report

  • Drag the formula from Field Explorer to the report

Step 6. Edit the text field

  • Change the font to: BCW_417
  • Set desired font point size.  For smaller barcodes, it can be as low as 2pt

  • Right-click and select Format Field...

  • Select Can Grow on the Common tab

The report is now ready

  • Click on Preview to see or print it.