Qr-Codes erzeugen
Bild: wir_sind_klein, Pixabay Lizenz

QR-Codes mit PDFlib

Die PDFLib kennt – zumindest ohne Acrobat Pro und der passenden Erweiterung – selbst keine Befehle, mit denen QR-Codes erzeugt werden könnten. Der QR-Code muß also extern erzeugt und als Bild platziert werden – eine leichte Übung.

Wenn die Ausgabegröße bzw. das Druckformat des Dokuments bereits feststeht, also beispielsweise ein DIN A4, dann kann ein einfaches PNG-Bild verwendet werden. Soll die Ausgabegröße aber variabel sein, dann ist aus Qualitätsgründen ein Vektorformat für den QR-Code vorzuziehen, zumal die Dateigröße des Dokuments deutlich kleiner wird. Ein QR-Code im SVG-Format hat nur einen Bruchteil der Größe eines PNG-Bildes in druckfähiger Auflösung – bei der massenhaften Erzeugung von solchen Dokumenten ist das ein weiterer Pluspunkt.

$p = new pdflib();

$p->set_parameter("errorpolicy", "return");
$p->set_parameter("SearchPath", $searchpath);

/* open new PDF file; insert a file name to create the PDF on disk */
if ($p->begin_document($PDFFilename, "") == 0) {
  die("Error: " . $p->get_errmsg());
}

$p->set_info("Title", "QR-Code-Example");
$p->set_info("Creator", "");

/* import svg */
$graphics = $p->load_graphics("auto", $SVGFilename, "");
if ($graphics == 0) throw new Exception("Error: " . $p->get_errmsg());

$p->begin_page_ext(400, 400, "topdown");
$optlist = "boxsize={ 400 400 } position={center} fitmethod=meet";

if ($p->info_graphics($graphics, "fittingpossible", $optlist) == 1) {
  $p->fit_graphics($graphics, 0, 400, $optlist);
} else {
  throw new Exception("Cannot place graphics: " . $p->get_errmsg());
}

$p->end_page_ext("");
$p->close_graphics($graphics);
$p->end_document("");