Spring naar hoofdtekst

PostNL KIX-code met FPDF in PHP

Geplaatst op door ,
Laatste aanpassing op .

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 te includen en daarna de functie MakeFont() 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:

<?php
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');

Inhoudsopgave

Klik op één van de onderstaande categorieën om de lijst met artikelen te filteren.