Ich werde Ihnen zeigen, wie Sie eine Webseite erstellen, um eine PDF-Datei von meinem Computer an einen Drucker zu senden, indem Sie den Ferndruckservice nutzen. Expedy Print.
In diesem Beispiel verwende ich einen Etikettendrucker (Label), um selbstklebende Transportetiketten im Standardformat 4×6 (10x15cm) zu drucken. Zum Beispiel erstelle ich Etiketten für einen Online-Shop, die ich an einen Drucker in einem anderen Raum in meinem Lager oder bei einem Dropship-Partner auf der anderen Seite der Welt weiterleiten möchte.
Beide Funktionen können unabhängig voneinander oder gleichzeitig verwendet werden.
Der vollständige Quellcode: https: //github.com/ExpedyDev/pdftoprinter
Hardware-Voraussetzungen
- Etikettendrucker, in diesem Beispiel verwende ich einen Netum(NT-LP110F), aber Sie können auch andere 4×6 Thermomodelle wie Zebra, Brother, BeePRT oder ein anderes Format (A3, A4, Foto-Postkarte…) verwenden, je nachdem, was Sie benötigen.
- Cloud Print-Adapter von Expedy
- Klassische Internetverbindung
Web-Voraussetzungen
Vorschau auf das Ergebnis der Seite

1. Erstellung des Formulars
Sie erstellen ein Formular zur Texteingabe und/oder zum Hochladen von Dateien.
Das erste Feld dient zur Erstellung einer PDF-Datei aus einer Texteingabe, und die Schaltfläche Durchsuchen dient zum Hochladen einer oder mehrerer PDF-Dateien.
<!DOCTYPE html>
<html>
<head>
<title>Créer un PDF et imprimer</title>
</head>
<body>
<h1>Créer un PDF et imprimer</h1>
<form method="post" action="" enctype="multipart/form-data">
<label for="text">Saisissez le texte à imprimer en PDF :</label><br>
<input type="text" id="text" name="text"><br><br>
<label for="files">Envoyer des fichiers PDF :</label><br>
<input type="file" id="files" name="files[]" multiple><br><br>
<button type="submit" name="submit">Imprimer</button>
</form>
</body>
</html>2. PHP-Erstellung
Hier ist der vollständige PHP-Code :
<?php
// Si le formulaire est soumis
if (isset($_POST['submit'])) {
// Vérifier si le champ texte est rempli
if (!empty($_POST['text']) || !empty($_FILES['files']['tmp_name'][0])) {
// Récupérer le texte saisi par l'utilisateur
$text = $_POST['text'];
// Générer le nom du fichier PDF avec la date actuelle
$pdfName = "pdf_" . date('Ymd_His') . ".pdf";
// Inclure la bibliothèque FPDF et FPDI
require('fpdf/fpdf.php');
require('fpdi/src/autoload.php');
// Créer un objet FPDI (PDF étendu) avec FPDF
$pdf = new \setasign\Fpdi\Fpdi('P', 'mm', array(105, 148));
// Gérer les fichiers PDF téléversés
if (!empty($_FILES['files']['tmp_name'][0])) {
foreach ($_FILES['files']['tmp_name'] as $file) {
if (!empty($file) && file_exists($file)) {
// Ajouter les pages du fichier PDF au PDF en cours
$pageCount = $pdf->setSourceFile($file);
for ($pageNumber = 1; $pageNumber <= $pageCount; $pageNumber++) {
$tplIdx = $pdf->importPage($pageNumber);
$pdf->AddPage();
$pdf->useTemplate($tplIdx);
}
}
}
}
// Ajouter une page au PDF si le champ texte est rempli
if (!empty($text)) {
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40, 10, $text);
}
// Générer le fichier PDF
$pdf->Output('F', $pdfName);
// Envoyer la requête à l'API Expedy pour imprimer le PDF
$file_url = 'https://' . $_SERVER['HTTP_HOST'] . '/' . $pdfName;
sendToExpedyPrinter($file_url);
echo "<p>Vos fichiers ont été envoyés à l'imprimante !</p>";
} else {
echo "<p>Aucun texte ou fichier PDF spécifié.</p>";
}
}
function sendToExpedyPrinter($file_url) {
// Printer UID API Expedy.com
$printer_uid = 'SAISIR UID PRINTER';
// Message à imprimer
$data = array(
'usb_msg' => $file_url,
'origin' => 'Your defined origin tag.. a uri, a name ..'
);
// Infos API
$options = array(
CURLOPT_URL => "https://www.expedy.fr/api/v2/devices/" . $printer_uid . "/usb/4/print",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => array(
"Accept: application/json",
// Vos identifiants API sid:token
"Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Content-Type: application/json"
),
);
$curl = curl_init();
curl_setopt_array($curl, $options);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
}
?>Ich werde nicht auf jeden einzelnen Punkt eingehen, da die Kommentare für sich selbst sprechen:
Die FPDF- und FPDI-Bibliotheken sind für die PDF-Erzeugung und das Zusammenfügen verschiedener PDF-Dateien zu einer einzigen PDF-Datei unerlässlich.
Diese PDF-Zusammenführung ist wichtig, da es für den Drucker effizienter und schneller ist, eine einzige PDF-Datei mit mehreren zu verarbeitenden Seiten zu haben, als eine einzelne PDF-Datei nach der anderen an die API zu senden.
Text als PDF generiert
Wenn das Feld Text eingegeben wird (optional), wird der erzeugten PDF-Datei eine erste Seite hinzugefügt. Hier können Sie die Typografie des gedruckten Textes einstellen.
$pdf->SetFont('Arial','B',16);Abmessungen des PDF
In diesem Beispiel muss ich Transportaufkleber drucken, also geben wir die Werte in mm an, um ein Dokument im Format 4×6 (10x15cm) zu erstellen. Sie können die Werte für die Höhe und Breite jedoch anpassen, um auf jedem beliebigen Format zu drucken.
$pdf = new \setasign\Fpdi\Fpdi('P', 'mm', array(105, 148));UID Printer
Rufen Sie die eindeutige Kennung des Druckers im Expedy-Konto in der Konsole im Abschnitt Printers ab. Lassen Sie die # weg. Zum Beispiel GSEPOHGEIO.
function sendToExpedyPrinter($file_url) {
// Printer UID API Expedy.com
$printer_uid = 'SAISIR UID PRINTER';API-Schlüssel
Holen Sie sich die API-Schlüssel aus dem Expedy-Konto in der Konsole im Menü links im Abschnitt Api Keys.
Geben Sie die Schlüssel in diesem Order ein: sid:token
"Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",USB-Anschluss einstellen
In diesem Beispiel wird der USB-Anschluss Nummer 4 verwendet.
Um den USB-Anschluss zu ermitteln, gehen Sie in der Expedy-Konsole zu Machines und führen Sie einen USB-Scan durch:

CURLOPT_URL => "https://www.expedy.fr/api/v2/devices/" . $printer_uid . "/usb/4/print",Einen Ausdruck testen
Wenn Sie die Installation erfolgreich abgeschlossen haben, sollten Sie eine PDF-Datei in Ihrem Hauptordner erstellen und die Abfrage wie unten dargestellt zurückgeben.
Bitte beachten Sie, dass PDF-Dateien nicht gelöscht werden und daher viel Speicherplatz auf Ihrem Hosting belegen können.

Français (Französisch)
Español (Spanisch)
Deutsch
Italiano (Italienisch)
Português (Portugiesisch, Portugal)