Struktura
PDF-417jest kodem modularnym. Zbudowany jest z odcinków danych zwanych słowami. Każdy znak symbolu składa się z 4 jasnych i 4 ciemnych kresek, z których każdy musi mieć szerokość do 6 modułów (w całości powinien zawierać nie więcej niż 17 modułów). Symbol może zawierać od 3 do 90 rzędów znaków, a w każdym z nich umieścić można od 1 do 30 słów kodowych. Każdy wiersz w kodzie PDF-417 składa się z:
  • "cichej" strefy,
  • znaku startowego,
  • lewego wskaźnika wiersza,
  • danych (1 do 30 kolumn/znaków symbolu),
  • prawego wskaźnika wiersza,
  • znaku stop,
  • "cichej" strefy.
Maksymalnie w jednym symbolu PDF-417 można zawrzeć do 928 słów kodowych: 925 zawierających dane plus trzy słowa funkcyjne.

Tekst towarzyszący

Symbole PDF-417 mogą zakodować ogromną ilość informacji, co powoduje, że czytelna dla człowieka reprezentacja tych danych (ang. Human Readable Interpretation) staje się niepraktyczna. Z tego względu, symbolowi może towarzyszyć tekst o charakterze bardziej opisowym niż dosłownym. Może on być wydrukowany gdziekolwiek na powierzchni otaczającej symbol, ale nie powinien nachodzić na sam symbol, ani na ciche strefy wokół niego

Słowa kodowe

  • Słowa kodowe powinny mieć następującą sekwencję: Symbol opisu długości - zawsze powinien kodować całkowitą liczbę słów kodowych w symbolu włączając sam symbol opisu długości, słowa kodujące dane i uzupełniające słowa kodowe, ale wyłączając liczbę słów kodowych do korekcji błędów.
  • Słowa kodowe dla danych, zaczynając od najbardziej znaczącego znaku możliwego do zakodowania. Różnego rodzaju specjalne znaki mogą być umieszczane w celu uzyskania kompresji danych. Uzupełniające słowa kodowe, które pozwalają na to, aby sekwencja słów kodowych reprezentowana była jako macierz prostokątna. Uzupełniające słowa kodowe mogą zostać także wykorzystane do wypełnienia dodatkowych wierszy w celu osiągnięcia żądanej lub wyszczególnionej w programie proporcji wymiarów macierzy.
  • Opcjonalne korekcyjne słowa kodowe dla korekcji błędów.
  • Dwa korekcyjne słowa kodowe dla detekcji błędów.

Detekcja i korekcja błędów

Detekcja błędów w kodzie PDF-417 jest odpowiednikiem znaku sumy kontrolnej w symbolikach linearnych. Dwa słowa kodowe są zawsze umieszczane w każdym kodzie kreskowym PDF-417. Detekcja błędów definiowana jest w PDF-417 jako korekcja błędów na poziomie 0 i jest stosowana dla wszystkich poziomów korekcji błędów.

Korekcja błędów może być wykorzystywana do uzupełniania danych, które z różnych powodów nie zostały przeczytane przez czytnik. Dla danego poziomu korekcji błędów, określona liczba słów kodowych korekcji błędów jest wstawiana do symbolu kodu. Wykorzystywany algorytm korekcji błędów pozwala na korekcję dwóch rodzajów błędów:
  • wykasowanie - czyli brakujące lub niemożliwe do zdekodowania słowo kodowe (pozycja słowa kodowego jest znana, natomiast jego wartość nie),
  • zamiana wartości na inną - oznacza błędne zdekodowanie słowa kodowego (zarówno pozycja jak i wartość słowa kodowego jest nieznana).
Poziom korekcji błędów Wymagana liczba słów kodowych
Korekcja błędów Detekcja błędów Całkowita liczba słów kodowych korygujących błędy
0 0 2 2
1 2 2 4
2 6 2 8
3 14 2 16
4 30 2 32
5 62 2 64
6 126 2 128
7 254 2 256
8 510 2 512


Zaleca się, aby używać poziomów korekcji możliwie jak najmniejszych, gdyż wraz ze wzrostem poziomu korekcji wzrasta liczba dodatkowych informacji koniecznych do zakodowania w symbolu kodu kreskowego. Zalecane minimalne poziomy zabezpieczeń w zależności od liczby znaków są przedstawione w tabeli poniżej.

Liczba słów kodowych Minimalny poziom korekcji błędów
1-40 2
41-160 3
161-320 4
321-863 5

MicroPDF417

MicroPDF417 jest kodem kreskowym opartym na kodzie PDF-417. Został on zaprojektowany do zastosowań wymagających oszczędności powierzchni fizycznej, jaką zajmuje kod, kosztem pojemności kodu.

Kod MicroPDF417 pozwala na zakodowanie 150 bajtów, 250 znaków alfanumerycznych lub 366 cyfr. MicroPDF417 ma wiele z tych samych właściwości, co kod PDF-417, wliczając tryby kodowania, korekcję błędów oraz zestawy znaków. Cechą odróżniającą ten kod od jego pierwowzoru jest fakt, że symbol może mieć jedynie określone kombinacje słów kodowych w wierszach, kolumnach i korygujących błędy. Maksymalne wymiary wynoszą do 4 kolumn danych na 44 wiersze.

Wzór start/stop o szerokości 17 modułów występujący w PDF-417, w kodzie MicroPDF417 został zastąpiony unikalnym zestawem wzorów adresowania wiersza (ang. Row Address Patterns) o szerokości 10 modułów, zaprojektowanymi w celu zmniejszenia całkowitej wielkości symbolu, a także radzenia sobie ze skanowaniem liniowym dla małych wysokości wierszy rzędu 2X.

Ciekawą możliwością kodu MicroPDF417 jest skanowanie skrośne (ang. cross-row scanning). Polega to na skanowaniu skanerem liniowym kilku wierszy i częściowym dekodowaniu danych tak długo, dopóki przynajmniej jeden kompletny znak symbolu na wiersz jest poprawnie dekodowany do swojego słowa kodowego. Następnie algorytm dekodujący jest w stanie połączyć wiele pojedynczych słów kodowych w całość. Jest to możliwe dzięki:
  • synchronizacji poziomej,
  • identyfikacji wiersza,
  • synchronizacji pionowej przy użyciu wartości klastrowych w celu rozróżnienia lokalnego wiersza.

Zastosowanie

Kod kreskowy PDF-417 jest szeroko stosowany. Lista potencjalnych zastosowań jest długa i obejmuje:
  • kodowanie specyfikacji technicznych,
  • transport i spedycję,
  • dokumenty tożsamości - także przepustki,
  • kodowanie odcisków palców i fotografii na tylnej stronie prawa jazdy w USA,
  • kontrolę niebezpiecznych artykułów,
  • kontrolę jakości i wiele innych.
Pojemność kodu PDF-417 może być pomocna w przypadku, gdy informacje o produkcie muszą podróżować z nim, gdy dostęp do bazy danych z informacjami nie zawsze jest możliwy. O możliwościach kodu kreskowego PDF-417 niech świadczy także fakt, że jest on używany przez NATO i IFOR. Kod MicroPDF417 został wybrany przez największą sieć domów towarowych w Hiszpanii, El Corte Ingles, do znakowania małych przedmiotów, takich jak biżuteria.

Przykłady

300 znaków ASCII.
500 znaków alfanumerycznych.
366 cyfr.
Przykład wygenerował program HDF® BarCode System.