Ich benutze Ajax-Funktionalität, um meine Inhalte abzurufen, und ich muss PDF bei Erfolg von jQuery.ajax()
exportieren. Wie kann ich das machen?Ist es möglich, PDF mit jQuery zu generieren?
Antwort
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.
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.
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.
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.
denke ich Sie dieses Plugin verwenden können
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
// }
})
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 –
- 1. Ist es möglich, Datenbank automatisch mit zwei Context zu generieren?
- 2. ist es möglich, Visual Studio-Lösungsdateien mit StylusStudio zu generieren?
- 3. Ist es möglich, mit Haml einfach-altes XML zu generieren?
- 4. Ist es möglich, PDF-Formulare mit UIKit zu erstellen?
- 5. Ist es möglich, Dienste für Angular2 von Loopback zu generieren?
- 6. Ist es möglich, Google App Invite serverseitig zu generieren?
- 7. Ist es möglich, JUnit-Testfälle und -Suiten programmgesteuert zu generieren?
- 8. Ist es möglich, Symbole für eine EXE neu zu generieren?
- 9. Ist es möglich, Django-Modelle aus der Datenbank zu generieren?
- 10. ASP.NET MVC - Ist es möglich, anwendungsübergreifende Aktionslinks zu generieren?
- 11. Ist es möglich, Textfolgen zu generieren, die einem Muster folgen?
- 12. Ist es möglich, lokale PDF-Dateien auf SFSafariViewController zu laden?
- 13. Ist es möglich, Unicode-Zeichen in Java dynamisch zu generieren?
- 14. Warum ist es möglich, eine generische Klasse zu generieren?
- 15. ist es möglich, auf externe PDF-Auswahl zu verlinken?
- 16. Ist es möglich, durch physikalische Prozesssimulation Zufallszahlen zu generieren?
- 17. Ist es möglich, Xcode-Projekte automatisch zu generieren?
- 18. Es ist möglich, das Char in Google Charts zu generieren?
- 19. Ist es möglich, HTML-Elementobjekte in JavaScript/JQuery zu klonen?
- 20. ist es möglich, pdf-Datei in Webseite zu cachen?
- 21. Ist es möglich, jQuery intellisense mit klassischem Asp zu verwenden?
- 22. Ist es möglich, eine Tabelle mit jquery zu paginieren?
- 23. Mit jQuery, ist es möglich, Selektoren zu verketten?
- 24. Ist es möglich, Jquery DOM-Objekt mit Requisiten zu klonen?
- 25. Ist es möglich, Jquery mit Eclipse zu integrieren?
- 26. Ist es möglich, PDF-Dateien in reportlib mit python3 zusammenzuführen?
- 27. ImageMagick: Ist es möglich, "Schnittmarken" zu entfernen?
- 28. Ist es möglich, jQuery zu Vanilla JS zu transponieren?
- 29. Generieren PDF mit Swift 2.0
- 30. ist es möglich, zu prüfen, ob pdf mit ghostscript passwortgeschützt ist?
ja, ist es möglich, ein pdf mit zu erzeugen Javascript ... http: // Stapelüberlauf.com/questions/742271/generating-pdf-files-with-javascript –
@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 ** " –
Ich sehe die Frage nicht erwähnen ** Cross-Browser ** –