2017-01-18 4 views
0

Ich verwende jspdf library zum Generieren von PDF-Datei aus HTML. Es ist wirklich nett. Aber ich habe ein Problem mit der letzten Zeile auf jeder Seite der PDF.jspdf - letzte Absatzzeile wird geschnitten

Hier ist ein DEMO und meine javascript:

var pdf = new jsPDF(); 
$('#generatePdfBtn').click(function() { 
    pdf.fromHTML($('#printableContent').html(), 15, 15, { 
     'width': 400 
    }); 
    pdf.save('myPdf.pdf'); 
}); 

Wenn Sie ein PDF mit einem Klick auf eine Schaltfläche zu generieren, werden Sie, dass am Ende der ersten Seite sehen wir „pararaph 30“ haben und in der Regel auf nächste Seite von pdf sollten wir nächsten Absatz "pararaph 31" sehen. Aber ich sehe es nicht und sehe stattdessen "Paraphe 32". Warum die letzte Zeile verloren geht? Irgendwelche Ideen bitte?

+0

nur ein Gedanke: Warum nicht mit dem Befehl print und dann Benutzer kann speichern als pdf.Supported in allen Browsern. schnell und einfach. Sie können nur druckbaren Inhalt drucken lassen. –

+0

Ich habe versucht, aber es ist keine gute Idee, da die Seite dort nicht korrekt angezeigt wird. – aidadev

+0

haben Sie versucht, @media print css zu verwenden, um nur druckbare Inhalte anzuzeigen und CSS-Werte anzupassen, oder gab es ein anderes Problem –

Antwort

0

Meine Vermutung, es schneidet die Linie, wie es nicht innerhalb der Ränder geschrieben wird. Der einfachste Weg besteht darin, eine Schleife zu erstellen, bei der jede 31. Zeile dupliziert wird. Nicht die beste Lösung, aber die schnellste.

1

Nun gibt es einen Trick, wenn Sie bestimmen können, wo Sie den Seitenumbruch setzen müssen, dann können Sie einfach eine "" dort platzieren, um es zu erzwingen. Auf diese Weise können Sie vermeiden, dass der Text abgeschnitten wird.

Arbeiten DEMO:http://jsfiddle.net/nq361uoz/4/

Leider ist dies ein bekannter Fehler in jsPDF, die noch im GitHub Repository in open Status ist.

Mehr Infos hier:https://github.com/MrRio/jsPDF/issues/555

hoffe, das hilft!

+0

ja ich sehe, dass es funktioniert, wenn Sie "" setzen, aber in meinem Fall habe ich dynamischen Inhalt und es kann länger und kürzer sein. Ich weiß nicht, wo die Seite zerbrochen werden muss. @David R – aidadev

+0

Ich habe gerade festgestellt, dass das Hinzufügen dieses '' auch eine Pause hinzufügt und der Inhalt auf die nächste Seite verschoben wird. Aber ich frage mich, wie ich das dynamisch machen kann. @ David R – aidadev

0

Versuchen Sie folgendes:

Öffnen Sie Ihre jspdf.js oder jspdf.debug.js lokale Datei und modifizieren:

this.pdf.internal.getVerticalCoordinateString(this.y), style.color, "Td");

Löschen style.color und speichern als:

this.pdf.internal.getVerticalCoordinateString(this.y), "Td");

Dann läuft es richtig auf Firefox und Chrom. Zumindest hat das für mich funktioniert und das ist eine Lösung, bis sie diesen Fehler behoben haben.