Lm: In einer Form Daten aufnehmen und zum Download anbieten

Guten Abend liebe Entwicklercommuity 😊

Ich arbeite in der IT Branche nur leider nicht als Programmiererin.

Mein Interesse es zu lernen ist aber sehr gross. An Kleineren Projekten habe ich mich schon versucht. Um mehr zu lernen habe ich mir ein Projekt ausgedacht. Das Projekt dient dazu motiviert zu bleiben um am Ende hoffentlich ein Erfolgserlebnis abstreichen zu können. Das wird sicher lange gehen aber das ist für mich in Ordnung.

Ich würde gern wissen ob jemand mir helfen kann Ein Formular aufzusetzen. Ist es ein Formular ?

Meine Vorstellung:

Ich habe eine PDF (Anmeldeformular zur Kita) das komplette Layout dieser PDF soll genau so erhalten bleiben. Bevor ich dieses Formular zum Download erhalte Will ich In einer Form bestimmte Felder ausfüllen oder Fragen beantworten. Wenn ich bestätigen drücke soll eine neue Seite erscheinen, damit ich die PDF ausgefüllt runterladen kann...

Besten Dank für euer Feedback!

Besten Grüsse Lm

  1. Liebe Lm,

    Ich würde gern wissen ob jemand mir helfen kann Ein Formular aufzusetzen. Ist es ein Formular ?

    ja, dafür benutzt man ein Formular. Mehr dazu gleich.

    Ich habe eine PDF (Anmeldeformular zur Kita) das komplette Layout dieser PDF soll genau so erhalten bleiben.

    Wie sollen die aus dem Formular erhaltenen Daten in das PDF geschrieben werden? Dazu bedarf es einer serverseitigen Verarbeitung, die Nutzereingaben auswertet und mit irgendeiner Magie in das PDF schreibt.

    Die gute Nachricht: Für alles das gibt es bereits fertige Komponenten, die man dafür nutzen kann.

    Jetzt stehst Du vor einem ordentlichen Stück Weg, um zu Deinem Ziel zu gelangen. Folgende Stationen wirst Du auf Deinem Weg passieren müssen:

    • HTML einigermaßen verstehen und schreiben (für die Website, damit der Browser ein Formular anzeigen kann, welches der Besucher ausfüllen soll)
    • serverseitige Scriptsprache lernen (z.B. PHP), um serverseitige Verarbeitungen (z.B. von empfangenen Formulardaten) vornehmen zu können und maßgeschneiderte Ausgaben (wie z.B. eine generierte PDF-Datei) an den Browser zu senden
    • fertige PHP-Programme von anderen als Komponente verwenden, die PDF-Dateien als Vorlagen nehmen und darin zusätzliche Inhalte hineinschreiben können (z.B. fpdi in Verbindung mit tcpdf)

    Was Du da als Projekt beschreibst, habe ich auch schon machen müssen. Daher kann ich Dich ermutigen, das alles in Angriff zu nehmen, da ich weiß, dass es alles lösbare Probleme sind. Der letzte Punkt ist der wohl komplizierteste, da Du Dich hier mit von anderen erstellten Komponenten befassen wirst, insbesondere das Verwenden von bereits vorhandenen PDF-Dateien als Vorlage, wobei man Dir hier aber bei jedem Schritt helfen kann.

    Als Teaser möchte ich Dir hier ein kleines Code-Beispiel geben, welches in Ansätzen Deine Vorstellungen umsetzt. Du siehst hier ein klitzekleines PHP-Programm, welches zwei Funktionen definiert, wovon eine ein Formular ausgibt, und eine zweite eine PDF-Datei ausgibt - abhängig davon, ob ein Besucher der Seite alle benötigten Formulareingaben gemacht hat:

    <?php
    
    function send_form () {
      // vorgefertigte HTML-Datei als Vorlage nehmen
      $html = file_get_contents(__DIR__.'/res/formular.html');
    
      // bereits vorhandene Nutzereingaben in das Formular schreiben
      foreach ($_POST as $key => $value) {
        // ... noch zu implementieren
      }
    
      // an den Browser senden
      header('Content-Type: text/html; charset=UTF-8');
      echo $html;
    }
    
    function send_pdf () {
      // PDF-Programme einbinden
      include __DIR__.'/res/fpdi/fpdi.php';
      include __DIR__.'/res/tcpdf/tcpdf.php';
    
      // damit neue PDF-Datei anlegen
      $pdf = new Fpdi('P', 'mm', 'A4', true, 'UTF-8', true);
    
      // vorhandene PDF-Datei als Vorlage benutzen
      $pdf->setSourceFile(__DIR__.'/res/anmeldung.pdf');
      $pdf->useTemplate($pdf->importPage(1));
    
      // Nutzereingaben in die PDF-Vorlage schreiben
      foreach ($_POST as $key => $value) {
        // ... noch zu implementieren
      }
    
      // PDF-Datei an den Browser für den Download senden
      $pdf->save();  
    }
    
    // wurden alle benötigten Daten eingegeben?
    if (
      empty($_POST['Vorname'])
      || empty($_POST['Nachname'])
      || empty($_POST['Anschrift'])
      || empty($_POST['PLZ'])
      || empty($_POST['Ort'])
      || empty($_POST['Telefon'])
    ) {
      // nein - Formular (erneut) anzeigen
      send_form();
    } else {
      // ja - PDF-Datei erzeugen und zum Download anbieten
      send_pdf();
    }
    

    Das Code-Beispiel geht davon aus, dass Du zwei Dateien als Vorlagen hast, eine HTML- sowie eine PDF-Datei. Das Code-Beispiel selbst müsste in einer dritten Datei stehen, einer PHP-Datei. Außerdem erwartet das Beispiel, dass es prinzipiell sechs Nutzer-Angaben braucht, die sowohl im HTML-Formular, als auch in der PDF-Datei benötigt werden:

    1. Vorname
    2. Nachname
    3. Anschrift
    4. PLZ
    5. Ort
    6. Telefon

    Wie Du siehst, kann man prinzipiell alle Deine Vorstellungen umsetzen. Jetzt gilt es nur herauszufinden, was Du genau alles benötigst und wie Du im Detail Dinge lösen möchtest.

    Hast Du schon einen vernünftigen Editor, um damit Programmcode zu schreiben?

    Liebe Grüße

    Felix Riesterer

    1. Hallo Felix,

      Danke für die rasche Antwort und Tipps. Ich bin ein wenig überfordert muss ihr ehrlich zugeben aber werde mich mal daran versuchen.

      Danke! Gruss Lm

      1. Liebe Lm,

        Ich bin ein wenig überfordert muss ihr ehrlich zugeben aber werde mich mal daran versuchen.

        immer hübsch einen Schritt nach dem anderen.

        Mein Vorschlag: Beginne mit einer Liste an Daten, die Anwender eingeben müssen. Dann baust Du das Formular mit den Mitteln von HTML. Hilfe bekommst Du jederzeit hier.

        Hast Du schon einen vernünftigen Editor?

        Liebe Grüße

        Felix Riesterer

    2. problematische Seite

      Hallo Felix,

      ich stehe vor einer vergleichbaren Aufgabe. Chöre sollen ein 3-seitiges GEMA-Formular ausfüllen, siehe „problematische Seite”.

      // Nutzereingaben in die PDF-Vorlage schreiben
        foreach ($_POST as $key => $value) {
          // ... noch zu implementieren
        }
      

      Wie kann ich Felder in einem PDF per PHP ansprechen? Ursprünglich dachte ich, das PDF Formular in HTML nachzuempfinden. Aber wenn man das Original verwenden kann, umso besser.

      Gruß, Linuchs

      1. problematische Seite

        Hallo Linuchs,

        // Nutzereingaben in die PDF-Vorlage schreiben
          foreach ($_POST as $key => $value) {
            // ... noch zu implementieren
          }
        

        Wie kann ich Felder in einem PDF per PHP ansprechen? Ursprünglich dachte ich, das PDF Formular in HTML nachzuempfinden. Aber wenn man das Original verwenden kann, umso besser.

        Das hat sich bei mir als schwierig erwiesen, weil ich keine Software gefunden habe, die die Erstellung von PDF-Formularen unterstützt.

        Ich bin deshalb tatsächlich so vorgegangen, dass ich ein HTML-Formular ausfülle und daraus dann das PDF erzeuge. Das PDF ist dann allerdings kein Formular.

        Bis demnächst
        Matthias

        --
        Du kannst das Projekt SELFHTML unterstützen,
        indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
      2. problematische Seite

        Lieber Linuchs,

        Wie kann ich Felder in einem PDF per PHP ansprechen?

        nach meinem Wissen überhaupt nicht.

        Ursprünglich dachte ich, das PDF Formular in HTML nachzuempfinden. Aber wenn man das Original verwenden kann, umso besser.

        Du kannst das original als Vorlage verwenden. Aus technischer Sicht verhält sich die Vorlage wie ein Hintergrundbild. In dieses Bild kannst Du mit den entsprechenden PHP-Bibliotheken dann Deine Formulareingaben hineinschreiben und das so veränderte Ergebnis als PDF-Datei zum Download anbieten.

        Liebe Grüße

        Felix Riesterer