1

I have data that I need to encode in PDF417 barcodes. As they are too big (>6kB), i need to split them into multiple barcode which is called MacroPDF417.

I'm stuck with a library (tec-it tbarcode SDK) and I have to deal with it. My problem is that it does not support well macro PDF417.

Thus, I'm looking for a way to generate each of the macro pdf417 one by one but I need to know what the header is supposed to look like. I know that there is info about how many barcodes the data is split into and which number the read one is but I can't find a proper specification. I suppose that all this is in a header at the beginning of the data.

Would anyone be aware of how to generate MacroPDF417 barcodes from regular PDF417 barcodes?

EDIT: I managed to make my library work. Actually, their functionality that splits barcodes automatically is no longer usable. You only need to give to each of your PDF417 BC a common id, a position, and if set if it's the last BC of the macro PDF417.

b1.Pdf417.MacroPdf417Settings.FileId = "MacroPDF417Identifier"; b1.Pdf417.MacroPdf417Settings.IsLastSegment = false; b1.Pdf417.MacroPdf417Settings.SegmentIndex = i;

Tuxicoman
  • 132
  • 9

2 Answers2

3

The header or Macro Control Block is actually found at the end of the data block and starts with a Macro marker codeword of 928. It is comprised of two mandatory fields and zero or more optional fields. The segment index (a zero-padded number from 0 - 99998), the file identifier (a variable length field of base 900 numbers) and optional data (0 or more optional fields).

This information can be found in the ISO 15438 specification.

Brian Anderson
  • 1,661
  • 1
  • 17
  • 27
  • Sorry I didnt understand. Is that mean a macro pdf417 is some pdf417 with a control block at the end of each pdf? the structure of each pdf is same as an independent PDF417?? how reader understand macro pdf? – Mehdi Golzadeh Aug 08 '17 at 04:51
  • A Macro PDF417 is a way of splitting up a file that won't fit completely into one PDF417. To do this, each Macro PDF417 needs to have a control block embedded at the end of the data block. The control block contains the file identifier, a segment index, and a last segment flag. This allows you to scan several PDF417 barcodes together to input enough data to make a larger file than will fit into one barcode. – Brian Anderson Aug 08 '17 at 09:26
  • Each Macro PDF417 contains data that contributes to a file. Think of a file on a disk drive. If the file is small enough, it can fit into one disk sector. A PDF417 is the minimum storage unit, but if you have more data than will fit into one barcode symbol, your data has to be broken up. Each Macro PDF417 has some of the data contained in the entire message. You have to scan all of the Macro PDF417 barcodes that contain info for a file to read the entire file. The Macro Control Block tells you the name of the file and which "sector's" data is in the barcode being scanned. – Brian Anderson Aug 16 '17 at 20:49
  • Thank you for your detailed answer but how a reader can attach these pdf417s to each other and read data from it? and also i want to develop an application to create and read macro pdf how should I put 928 codeword in data? in the input string? – Mehdi Golzadeh Aug 18 '17 at 16:45
  • You need to make sure you are working with a Macro PDF417 scanner. I'm using a Motorola DS6707. When I scan each Macro PDF417 symbol, it emits two beeps until I read the last symbol in the file then it beeps once and dumps the file to the USB port in the order it was encoded, not scanned. You may scan the barcodes out of order as long as you scan each code in the file at least once. The scanner emits a long beep for error if you scan a particular symbol twice, or scan a symbol from another file before you finish with all the barcodes in a file. Take care to make sure the data is delimited. – Brian Anderson Aug 18 '17 at 19:30
0

I'm actually coding PDF417 Macro as I type... researching that exact component. I'm not familiar with tec-it product, but don't know if its just "easy" to know WHAT you want unless they specifically allow the hooks to properly embed it during the encoding of the data codewords padding, Macro component, then error correction data. Good luck following the specs.

DRapp
  • 47,638
  • 12
  • 72
  • 142