DHL-Paketmarken werden standardmäßig im Querformat erzeugt und enthalten auf der linken Seite einen großflächigen Block mit Informationen, die im Alltag kaum noch jemand benötigt: Trackingnummern, Versandbestätigungen und verschiedene Metadaten sind ohnehin im DHL-Kundenkonto bzw. im Online-Tracking abrufbar. Für den Einsatz am Etikettendrucker ist dieser komplette linke Bereich daher nutzlos – gebraucht wird ausschließlich das eigentliche Versandetikett auf der rechten Seite. Hinzu kommt: Die PDF-Ausgabe der DHL-Marke entspricht nicht dem gängigen Etikettenformat von 100 × 150 mm (4×6 Zoll). Ein direkter Druck auf Thermo- oder Labeldruckern führt damit häufig zu Skalierungsproblemen oder erfordert einen händischen Zuschnitt.
Ganz ähnlich verhält es sich mit vielen Hermes-Paketaufklebern: Auch nehmen zusätzliche Bestätigungs- und Informationsbereiche einen großen Platz auf einer A4-Seite ein, während der eigentliche Labelbereich nur einen Teil des PDFs ausmacht und nicht dem Standardformat von 100 × 150 mm entspricht.
Das hier bereitgestellte Script löst genau diese Probleme. Es liest die originale Paketmarke von DHL oder Hermes ein, dreht sie bei Bedarf, entfernt die überflüssigen Bereiche und extrahiert ausschließlich den relevanten Etikettenteil. Anschließend wird daraus ein neues, sauber beschnittenes PDF im Format 100 × 150 mm erzeugt – optimiert für Zebra-, DYMO-, Brother- oder vergleichbare Etikettendrucker. Das Ergebnis ist ein präzises, randnahes Versandetikett ohne Begleit- und Zusatzinformationen, das direkt gedruckt werden kann.
Das Script ist unter https://versandetiketten.allsky-rodgau.de/index.php aufrufbar und funktioniert einwandfrei mit DHL Paket- und DHL Päckchen-Etiketten sowie mit gängigen Hermes-Paketmarken (Stand: 10. Dezember 2025).
Und wer das Tool lokal installieren möchte, findet in diesem Beitrag alle notwendigen Informationen und den Downloadlink.
1. Systemvoraussetzungen
Für das Paketlabel-Script werden folgende Komponenten benötigt:
- Webserver mit PHP (empfohlen: PHP 7.4 oder höher, ideal PHP 8.x)
- PHP-Erweiterung Imagick inkl. PDF-Unterstützung (Ghostscript als Delegate)
- PHP-PDF-Bibliothek FPDF (Datei
fpdf.php) - Schreibrechte im Unterordner
tmp/des Scriptverzeichnisses
2. Dateien herunterladen
Für den Betrieb werden folgende Dateien benötigt:
index.php– Das hier bereitgestellte Script zur Verarbeitung der Paketmarken von DHL und Hermes, inklusive Upload, Zuschnitt und PDF-Generierung(Hier als ZIP-Archiv downloaden – Version 2.3 vom 10.12.2025)
Achtung: Für Heavy-Usage ist das Script nicht ausgelegt, aber es können mehrere User parallel mehrere Etiketten bearbeiten.
- Die Datei
fpdf.phpaus der PDF-Bibliothek FPDF – diese ist separat herunterzuladen: https://www.fpdf.org
3. Verzeichnisstruktur
Die Zielstruktur auf dem Webserver sollte wie folgt aussehen:
/htdocs └── dhl-label ├── index.php ├── fpdf.php └── /tmp
Beschreibung:
index.php– Upload, Verarbeitung und Generierung des 100×150-mm-PDFs (inkl. Vorschau im Browser)fpdf.php– FPDF-Klassetmp/– temporäre Dateien (Input-PDF, Zwischen-JPG, Output-PDF)
4. tmp-Verzeichnis anlegen und Rechte setzen
Im gleichen Ordner wie index.php einen Unterordner tmp anlegen und Schreibrechte vergeben. Beispielsweise per Shell:
chmod 755 tmp
Rechteempfehlung:
755ist in der Regel ausreichend:- Webserver-User kann lesen, schreiben und in das Verzeichnis wechseln
- Andere Nutzer haben nur Lese-/Ausführungsrechte, keine Schreibrechte
5. Imagick und PDF-Unterstützung prüfen
Vor dem produktiven Einsatz sollte geprüft werden, ob Imagick und die PDF-Unterstützung auf dem Zielsystem korrekt funktionieren.
5.1 Imagick geladen?
Testdatei phpinfo.php anlegen (nur für Setup, danach wieder löschen):
<?php phpinfo();
Diese im Browser aufrufen und prüfen:
- Abschnitt imagick vorhanden?
- Unter „supported formats“ sollte PDF aufgeführt sein.
5.2 Optionaler PDF-Lesetest
Optional kann mit folgendem Script getestet werden, ob ein PDF eingelesen werden kann (eine Datei test.pdf ins gleiche Verzeichnis legen):
<?php
if (!extension_loaded('imagick')) {
die("Imagick ist nicht installiert.");
}
try {
$im = new Imagick();
$im->setResolution(72, 72);
$im->readImage(__DIR__ . "/test.pdf[0]");
echo "PDF erfolgreich gelesen. Breite: "
. $im->getImageWidth()
. " / Höhe: "
. $im->getImageHeight();
} catch (Exception $e) {
echo "Fehler beim Lesen des PDFs: "
. htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');
}
6. Installation der Scripte
index.phpin das gewünschte Verzeichnis auf dem Webserver hochladen (z. B./htdocs/dhl-label/).fpdf.phpaus dem FPDF-Paket in dasselbe Verzeichnis kopieren.- Unterordner
tmp/im gleichen Verzeichnis anlegen und mit Rechten755versehen. - Optional: Imagick und PDF-Unterstützung wie in Abschnitt 5 beschrieben testen.
7. Nutzung im Browser
- Im Browser die
index.phpaufrufen, z. B.:https://versandetiketten.allsky-rodgau.de/index.php
- Eine DHL- oder Hermes-Paketmarke als PDF-Datei auswählen und hochladen.
- Das Script:
- liest die Paketmarke ein,
- dreht sie bei Bedarf,
- schneidet den Etikettenbereich zu (inkl. Beschnitt oben/unten/links/rechts),
- passt das Etikett auf 100×150 mm an,
- erzeugt ein neues PDF und
- zeigt dieses in einer Vorschau-Seite im Browser an; von dort kann es direkt gedruckt oder heruntergeladen werden.
- Im Ordner
tmp/verbleibt immer nur die aktuell erzeugte PDF-Datei; alle älteren PDFs werden beim Aufruf vonindex.phpautomatisch gelöscht.
8. Typische Fehlerquellen
- Imagick nicht installiert / weiße Seite
Imagick-Erweiterung fehlt oder ist in derphp.ininicht aktiviert. Hosting-Dokumentation prüfen oder Provider kontaktieren. - PDF-Verarbeitung schlägt fehl (keine PDF-Delegates o. Ä.)
Ghostscript oder die PDF-Unterstützung von ImageMagick fehlt oder ist durchpolicy.xmlblockiert. Entsprechende Serverkonfiguration anpassen lassen. - Upload-Fehler / Datei zu groß
PHP-Einstellungenupload_max_filesizeundpost_max_sizeprüfen (mindestens 5 MB empfehlenswert). - PDF wird nicht erzeugt oder nicht angezeigt
Prüfen, ob der Ordnertmp/existiert, beschreibbar ist und ob die Dateifpdf.phpkorrekt eingebunden wurde. Bei Bedarf Fehlermeldungen temporär einschalten (error_reporting/display_errors).
9. Sicherheit
Das Script wurde so entwickelt, dass typische Angriffspunkte weitgehend ausgeschlossen werden. Alle hochgeladenen Dateien werden strikt auf das PDF-Format geprüft, mit sicheren temporären Dateinamen gespeichert und ausschließlich serverseitig verarbeitet. Pfadmanipulationen sind durch die Nutzung von basename() beim Zugriff auf Dateien im tmp-Verzeichnis ausgeschlossen, und beim Aufruf von index.php werden automatisch alle älteren PDFs entfernt, sodass keine historischen Dateien liegen bleiben.
Fehlerausgaben werden HTML-sanitized, und die erzeugten PDFs werden direkt aus dem tmp-Verzeichnis an den Browser gestreamt, ohne Ausführung von Benutzereingaben. Uploads können nicht als Code ausgeführt werden, da Imagick und FPDF die Dateien ausschließlich rendern bzw. neu erzeugen.
Beispielhafte sicherheitsrelevante Stellen im Code:
// Nur echte PDF-Dateien akzeptieren
$mime = $finfo->file($file['tmp_name']);
if ($mime !== 'application/pdf') {
fail('Nur PDF erlaubt');
}
// Sichere Dateinamen
$inputPdf = $tmpDir . '/' . secure_filename('.pdf');
// Pfad-Schutz beim Zugriff auf erzeugte PDFs
$file = basename($_GET['file']);
$path = $tmpDir . '/' . $file;
Hinweis / Disclaimer:
Dieses Script wird ohne jede Gewährleistung bereitgestellt. Die Nutzung erfolgt vollständig auf eigene Verantwortung. Es wird keinerlei Haftung übernommen für fehlerhafte Ausdrucke, beschädigte Sendungen, falsch platzierte oder unvollständige Etiketten, technische Probleme, Folgeschäden oder sonstige Auswirkungen, die durch den Einsatz dieses Scripts entstehen können.
Bitte prüfen Sie jedes erzeugte Etikett sorgfältig, bevor Sie es verwenden oder auf eine Sendung aufbringen. Insbesondere ist sicherzustellen, dass alle relevanten Barcodes und QR-Codes vollständig sichtbar, nicht beschnitten und maschinenlesbar sind. Für eventuelle Versandprobleme, Rücksendungen, Aufpreise oder Zustellverzögerungen übernehme ich keinerlei Verantwortung.
- „DHL“ ist eine eingetragene Marke der DHL International GmbH bzw. der Deutsche Post DHL Group.
- „Hermes“ ist eine Marke der Hermes Germany GmbH und der jeweiligen Hermes-Unternehmen.
Dieses Script steht in keiner Verbindung zu DHL oder Hermes, wurde nicht im Auftrag dieser Unternehmen erstellt und ist kein offizielles Produkt oder offizielles Werkzeug der genannten Marken.
Die Nutzung dieser Software erfolgt freiwillig, unentgeltlich und ohne Anspruch auf Support oder Funktionsgarantie.