MetaModels Workshop in Berlin
Ergebnis 1 bis 8 von 8

Thema: PDF mit JavaScript erstellen: Problem mit IE[erledigt]

  1. #1
    Alter Contao-Hase
    Registriert seit
    20.09.2012.
    Ort
    Lüneburger Heide
    Beiträge
    1.389
    User beschenken
    Wunschliste

    Standard PDF mit JavaScript erstellen: Problem mit IE[erledigt]

    Hallo Leute,

    vorab - es geht nicht um Contao.

    Ich habe ein JavaScript welches mir ein PDF erstellt. Dieses möchte ich dann mit dem OS-Eigenen Safe-Dialog speichern oder anzeigen lassen.
    In allen Browsern - AUßER IE - funktioniert das auch sehr gut.

    Leider wird im IE dieser Dialog nicht angezeigt.

    Hier hatte ich mit PHP schon mal zum Thema angefangen; hatte mich dann aber für JS entschieden.

    Ich benutze die JS-Lib: jsPdf


    Screenshot FireFox(alles in Ordnung):
    firefox.JPG

    Hier bekommt der entsprechende Button seinen Trigger:
    Code:
    /**
     * Reagiert auf den Button PDF erstellen und ruft die erwartete Funktion pdfErstellen() auf.
     * @returns {undefined}
     */
    $(function () {
        $("#zert_btnPdfErstellen").on("click", pdfErstellen);
    });
    Diese Funktion erstellt das PDF:
    Code:
    /**
     * Diese Funktion holt sich die vom Benutzer im Registrierungsformular eingegebenen, personenbezogenen Daten
     * und schreibt diese in eine *.pdf Datei.
     * Der Name der *.pdf Datei wird in der Variablen docName so zusammengesetzt, dass der Name und das Jahr der Durchführung im Dateinamen erscheinen.
     * @returns {undefined}
     */
    function pdfErstellen() {
    
        //Benutzerdaten abholen - diese kommen aus der Datei schnittstelle_PHP_JS.php
        let tmpDatenContainer = hohleBenutzerDaten();
    
        //Dateiname zusammensetzen
        let docName = 'Sicherheitsbelehrung' + new Date().getFullYear() + '_' + tmpDatenContainer['nachname'] + '.pdf';
    
        //Neues jsPDF Dokument erstellen
        let doc = new jsPDF();
    
        // Bild zum Dokument hinzufügen. Das kommt aus der Datei mat-scripts-pdf-image.js.
        doc.addImage(getImg(), 'JPEG', 0, 0, 210, 297);
    
        //Texte und personenbezogene Daten hinzufügen
        doc.setFontSize(16);
    
        doc.text(35, 130, 'Name:');
        doc.text(90, 130, tmpDatenContainer["nachname"]);
    
        doc.text(35, 150, 'Vorname:');
        doc.text(90, 150, tmpDatenContainer["vorname"]);
    
        doc.setFontSize(16);
        doc.text(40, 233, tmpDatenContainer["datum"]);
    
        //Speicherdialog aufrufen
        doc.save(docName);
    }
    Hat hier ggf. jemand eine Idee, wie ich dieses PDF im IE auch herunterladen/anzeigen lassen kann?

    Über einen Tipp würde ich mich freuen.

    Gruß
    tschero
    Geändert von tschero (12.06.2019 um 10:20 Uhr)

  2. #2
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.308
    Partner-ID
    1081
    User beschenken
    Wunschliste

    Standard

    Soweit ich mich erinnere, lag das (zumindest bei PHP) an den Headerzeilen im Download, der IE wollte immer ein paar Angaben mehr als alle anderen Browser.
    Welche Einträge das sind, kann ich aber nicht mehr sagen (zu lange her).

  3. #3
    Alter Contao-Hase
    Registriert seit
    20.09.2012.
    Ort
    Lüneburger Heide
    Beiträge
    1.389
    User beschenken
    Wunschliste

    Standard

    Diese beiden Info´s hab ich dazu gefunden.

    https://support.microsoft.com/en-in/...nown-mime-type

    https://developer.mozilla.org/en-US/...nt-Disposition

    Noch kann ich damit nicht ganz so viel anfangen.

  4. #4
    Alter Contao-Hase
    Registriert seit
    20.09.2012.
    Ort
    Lüneburger Heide
    Beiträge
    1.389
    User beschenken
    Wunschliste

    Standard

    In diesem Beispiel funktioniert das irgendwie, ich kann aber nicht ganz nachvollziehen warum:
    https://plnkr.co/edit/LTZHOc?p=preview

  5. #5
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.308
    Partner-ID
    1081
    User beschenken
    Wunschliste

    Standard

    Ich bin mir nicht ganz sicher, es könnte aber diese HTTP-Headerzeile gewesen sein:
    PHP-Code:
        header'Cache-Control: private'false ); 

  6. #6
    Alter Contao-Hase
    Registriert seit
    20.09.2012.
    Ort
    Lüneburger Heide
    Beiträge
    1.389
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von do_while Beitrag anzeigen
    Ich bin mir nicht ganz sicher, es könnte aber diese HTTP-Headerzeile gewesen sein:
    PHP-Code:
        header'Cache-Control: private'false ); 
    Wie verwende ich diese Zeile? Einfach in die PHP Datei einsetzen die auch das JS aufruft?

  7. #7
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.308
    Partner-ID
    1081
    User beschenken
    Wunschliste

    Standard

    Ich kenne mich mit J*-Sprachen nicht sonderlich aus.
    In Deinem Fall müßte es das JavaScript ausgeben, bevor die PDF-Daten gesendet werden.

    Edit: In JavaScript schreibt sich das sicherlich auch etwas anders!

  8. #8
    Alter Contao-Hase
    Registriert seit
    20.09.2012.
    Ort
    Lüneburger Heide
    Beiträge
    1.389
    User beschenken
    Wunschliste

    Standard

    Jetzt hat es geklappt.
    Es lag nur an der jsPdf.js Bibliothek.

    Falls das noch mal jemand benötigt:
    Hier eine gute Beschreibung wie man PDF Dateien mit jsPdf erstellt:
    https://www.mediaevent.de/pdf-on-the...rzeugen-jspdf/

    Weitere Quellen:
    https://rawgit.com/MrRio/jsPDF/master/docs/index.html
    https://mrrio.github.io/
    https://github.com/MrRio/jsPDF


    Mit dieser Version von jsPdf (hier als *.txt Datei) klappt es auch im IE:
    jspdf.min.js.txt

    Besten Dank noch mal an alle für die Hilfe.

    Gruß
    tschero

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •