Inleiding
Heb je je nooit afgevraagd wat die rare streepjescode onder een adres op menige envelop zou kunnen betekenen? Ik wel. Na een relatief korte zoektocht kwam ik op de website van PostNL de volgende informatie tegen:
De KIX-code is een streepjescode die u toevoegt aan uw adresgegevens. Het bevat alle gegevens die we nodig hebben om uw post automatisch te verwerken.
Het is dus een hulpmiddel voor het sorteerproces dat de afzender toevoegt aan het adres op de poststukken. Ik bedacht meteen een toepassing in mijn zelfgebouwde adresboek-webapplicatie. Hoe mooi zou het zijn om daar geautomatiseerd voorgedrukte enveloppen uit te laten rollen?
KIX formaat
PostNL stelt een lettertype bestand beschikbaar waarin de cijfers 0
tot 9
en
de 26 letters van het alfabet worden weergegeven als een uniek streepjespatroon.
Dit font is beschikbaar voor meerdere platformen, zie bovengenoemde pagina. De
inhoud van de KIX-code bestaat uit twee tot drie onderdelen:
- de vier cijfers en twee letters van de postcode
- de cijfers van het huisnummer
- een eventuele toevoeging, voorafgegaan door de letter
X
FPDF
Het adresboek had al ondersteuning voor het genereren van PDF-documenten door middel van de FPDF-bibliotheek. Dit is een PHP klasse die zonder verdere externe toeters of bellen universeel leesbare documenten kan genereren. Om de KIX code te kunnen invoegen, moet het KIX-lettertype aan FPDF worden toegevoegd.
makefont
Om naast de standaard lettertypen ook eigen fonts te kunnen gebruiken, moet zo'n
lettertype eerst worden voorbereid voor en door FPDF. Daartoe bevat het pakket
het makefont.php
-script in de map makefont
. Je kunt dit bestand op drie
manieren aanspreken (zie ook tutorial 7 in de FPDF download):
- door het
makefont.php
-script teinclude
n en daarna de functieMakeFont()
aan te roepen - door het
makefont.php
-script via de shell op te roepen - door een online convertor te gebruiken
Ik koos voor de commandline optie:
php /pad/naar/makefont.php /pad/naar/Kixbrg__.ttf;
Script
De twee gegenereerde bestanden (Kixbrg__.php
en Kixbrg__.z
) worden in de
font
-map van FPDF geplaatst. Daarna volstaan de volgende commando's om de
code op het virtuele papier te krijgen:
require_once 'fpdf.php';
$pdf = new FPDF('L', 'mm', array(114, 162)); // C6 envelop
$pdf->AddPage(); // pagina toevoegen
$pdf->AddFont('KIXBarcode', '', 'Kixbrg__.php'); // font toevoegen
$pdf->SetFont('KIXBarcode', '', 10); // font activeren
$pdf->Write(8, "1234AB99XA".PHP_EOL); // postcode 1234 AB, huisnummer 99A
$pdf->Write(8, "9876ZX37".PHP_EOL); // postcode 9876 ZX, huisnummer 37
$pdf->Output('I', 'envelop.pdf');