jQuery-Diagramme in PDFs umwandeln

8

Ich habe zwei jQuery-Diagramme Plugins gefunden, die ich mag - flot und jqPlot. Ich denke daran, eines davon am Front-End meiner Website zu verwenden.

Ich muss aber auch Benutzern erlauben, Daten im PDF-Format zu exportieren. Ich bin im Idealfall auf der Suche nach einer reinen Python-Lösung, könnte aber auch auf Java oder PHP zugreifen. Die Qualität der erzeugten Diagramme ist der wichtigste Faktor.

Optionen, die ich in Betracht gezogen habe, sind:

  • Erstellen Sie Diagramme auf dem Server und erstellen Sie eine PDF-Datei mit diesen Diagrammen. Ich habe Matplotlib und einige andere Python-Charting-Pakete angeschaut, aber die Diagramme sehen nicht annähernd so poliert aus wie flot oder jqPlot.
  • Verwenden Sie Rhino und Env.js, um denselben jQuery-Code auf dem Server auszuführen und die generierten Diagramme irgendwie zu erfassen und diese in PDFs einzufügen. Ist das mit Rhino möglich? Wie schwer ist es wahrscheinlich? Ich habe das Rhino-Canvas-Projekt gesehen, aber es sieht viel veraltet aus.

Was wäre der beste Weg, dies zu tun? Wenn ich die Rhino-Lösung zum Laufen bringen kann, wäre das großartig, da sie die Konsistenz zwischen dem Frontend und generierten PDFs aufrechterhält.

    
Roger 22.08.2010, 15:52
quelle

3 Antworten

4

Grafik in Bild umwandeln

Soweit ich es verstehe, zieht flot zum canvas-Element (wo verfügbar). Ich googelte Beispiele für den Canvas-Inhalt exportieren und fand canvas2image zum Beispiel. Es könnte oder könnte nicht ein Weg sein, es zu erkunden.

Siehe auch diese StackOverflow-Frage . Von diesem Punkt ausgehend, kann es recht einfach sein, ein Bild zu exportieren (mit Canvas.ToDataUrl(type) , das einen Mime-Typ annimmt. Ich bin mir ziemlich sicher, dass es mit application / pdf nichts anfangen wird ...).

Aktualisieren : Nun, sehen Sie hier, eine modifizierte Version von canvas2image befindet sich in flotr Quelle: Ссылка

PDF erzeugen

Es gibt Lösungen, um PDF aus JavaScript auf dem Client zu generieren:

Endergebnis

Kombinieren Sie diese beiden und Sie haben vielleicht eine Lösung.

    
Peter Jaric 13.09.2010 20:46
quelle
1

Ich schlage vor, einen Blick auf matplotlib zu werfen.

Die Diagramme sind sehr anpassbar und können sehr gut aussehen. Zugegeben, die vielen Möglichkeiten können zunächst einschüchternd sein. Aber eine Menge Augenschmaus-Effekte können erreicht werden, wenn Sie wissen, wie.

Wenn Sie beispielsweise Schatten wollen, werfen Sie einen Blick auf die transformiert Tutorial .

Außerdem liefert matplotlib hohe dpi-Bitmap-Bilder oder sogar PDF-Vektorgrafiken. Ich weiß nicht, wie schwer es ist, die erwähnten jQuery-Bibliotheken für Grafiken mit höherer Auflösung zu verwenden.

    
gclj5 22.08.2010 16:25
quelle
1

Sie können ein kopfloses Webkit (Rendering-Engine) mit Python und Qt auf einem Server ausführen, den Sie dann ausdrucken können zu PDF. Die Änderungen, die Sie vornehmen müssen, um eine PDF-Datei mit Qt zu drucken, sind hier aufgeführt, auch wenn sie dies möglicherweise tun nicht vollständig sein.

Diese Lösung wird nur die Seite rendern und Sie können die Diagramme als separate Bilder speichern oder den vorgeschlagenen Pfad zum Generieren eines vollständigen PDF der Seite gehen.

    
ikanobori 13.09.2010 21:32
quelle

Tags und Links