2010-12-20 19 views

Antwort

13

jQuery nicht (weil JavaScript nicht) ein PDF aus Daten erstellen, nein ... es kann einen von Ihrem Server (wie jede andere Anfrage), aber es kann nicht erzeugen. JavaScript hat einfach keinen Mechanismus (obwohl es einige HTML5-Optionen gibt, die jetzt implementiert werden), um eine Datei zu erstellen/speichern, die browserübergreifend arbeitet, insbesondere eine Binärdatei.

+10

ja, ist es möglich, ein pdf mit zu erzeugen Javascript ... http: // Stapelüberlauf.com/questions/742271/generating-pdf-files-with-javascript –

+1

@YuriKolovsky - Das funktioniert nicht in allen Browsern, es verwendet Daten-URIs (und benötigen möglicherweise ein Plugin), die obige Antwort ist immer noch wahr: "JavaScript einfach hat keinen Mechanismus, um eine Datei zu erstellen/speichern ** das funktioniert Browser-übergreifend ** " –

+1

Ich sehe die Frage nicht erwähnen ** Cross-Browser ** –

4

Wenn möglich, ist die Server-Seite eine bessere Wahl für die Erstellung von PDFs. Es wird wahrscheinlich für die meisten Benutzer schneller sein und das Zurücksenden einer Datei über eine Standard-HTTP-Anfrage ist viel robuster als die aktuellen clientseitigen Optionen.

Das heißt, diese Bibliothek eine PDF-Datei auf der Client-Seite generieren: http://snapshotmedia.co.uk/blog/jspdf

In Browsern, die Daten URIs unterstützen, kann es die PDF direkt zurück. In anderen Browsern können Sie es mit einer Flash-Komponente namens Downloadify verbinden, um dasselbe zu erreichen.

4

Wenn Sie PDF-Daten von Ihrem Server in Ihrem AJAX-Erfolg abrufen und sie Ihrem Benutzer als Download ausgeben müssen, kann dies mit einer kleinen Base64-Codierung erfolgen. Wenn ich richtig verstehe, haben Sie wahrscheinlich ein Szenario, in dem Ihr Server möglicherweise eine PDF oder einen anderen Datentyp bei Erfolg (wie XML) zurückgibt. In diesem Fall müssen Sie die Anfrage in zwei Schritten beantworten:

1) Ermitteln Sie den Inhaltstyp über seine Kopfzeile. Hier ist ein Beispiel der Handler der Aufteilung auf der Grundlage der Antwort:

$.ajax({ 

    type: "POST", url: "/test", data: someData, success: function(response, status, xhr){ 
    var ct = xhr.getResponseHeader("content-type") || ""; 
    if (ct.indexOf(‘xml’) > -1) { 
     // handle xml here 
    } 
    if (ct.indexOf(‘pdf’) > -1) { 
     // handle pdf here 
    }  
    } 
}); 

2) Sobald Sie Ihren PDF-Inhalt haben, können Sie den Browser umleiten, um die pdf zu zeigen, indem sie einen Base64 Daten Trick. Codieren Sie zunächst den Dateninhalt in base64. Es gibt eine number of libraries, die Ihnen dabei hilft, dies in Javascript zu tun. Dann geben Sie Ihren Inhalt über document.location.href zurück:

document.location.href = 'data:application/pdf;base64,' + base64PDFData; 

Das sollte bekommen, was Sie brauchen. Mit dieser Methode könnten Sie theoretisch jeden Inhaltstyp an den Browser weiterleiten.

EDIT:

ich sollte die Daten uri erwähnen, dass leider nicht due to security restrictions in IE arbeiten.

1

Wenn es sich bei dem HTML, mit dem Sie es zu tun haben, um eine Tabelle handelt, können Sie mit dem jquery.dataTables-Plug-In mit TableTools PDF generieren. Es verwendet Flash hinter den Kulissen und ist stark begrenzt auf die Formatierung, aber es erzeugt PDF.

http://datatables.net/extras/tabletools/

2

Fügen Sie diese in Ihrem Skript:

<script src="https://docraptor.com/docraptor-1.0.0.js"></script> 
DocRaptor.createAndDownloadDoc("YOUR_API_KEY_HERE", { 
    test: false, // test documents are free, but watermarked 
    type: "pdf", 
    name: planStatus+"_" +assessmentYear+"_"+employeeId+ ".pdf", 
    document_content: document.querySelector('#MyDoc').innerHTML, // use this page's HTML 
    // document_content: "<h1>Hello world!</h1>",    // or supply HTML directly 
    // document_url: "http://example.com/your-page",   // or use a URL 
    // javascript: true,          // enable JavaScript processing 
    // prince_options: { 
    // media: "screen",          // use screen styles instead of print styles 
    // } 
}) 
+0

Kopieren Sie den Code und fügen Sie ihn ein, um pdf zu erzeugen, und Sie können dem pdf ypu want.j einen beliebigen Namen geben. Ich habe einen Namen gegeben, der von der Variable entsprechend meiner Notwendigkeit genommen wird –

Verwandte Themen