2016-06-23 21 views
2

Ich verwende jsPDF und html2canvas ein div zu pdf zu konvertieren:ein div mit dem Attribut "versteckt" zu pdf mit jsPDF Konvertieren und html2canvas

<a onclick="makePdf()">PDF</a> 
<div id="divToPdf">Some content here</div> 

aber ich will nicht Mein div wird auf dem Bildschirm angezeigt. Ich habe versucht, hidden Eigenschaft mit dem div zu verstecken:

<a onclick="makePdf()">PDF</a> 
<div id="divToPdf" hidden>Some content here</div> 

Das Problem ist, dass die hidden Eigenschaft führt zu einem blank pdf Dokument. Wie kann ich das div ohne dieses Problem verstecken?

Antwort

0

Sie können das Layout Ihrer Seite auf verschiedenen Medien über CSS ändern.

Dies gilt auch für das Drucken.

Sie könnten also ein dediziertes Stylesheet schreiben, das nur gültig ist, wenn Sie die Seite in PDF drucken.

haben Sie einen Blick auf:

@media print { 
    div[hidden] { 
     display: block; 
    } 
    ... 
} 

Dies sollte wählen Sie das div mit hidden Attribut und machte jene sichtbar:

@media print { 
    ... 
} 

Für Ihr Beispiel Sie einen Code wie verwenden könnte.

Wenn Sie den programmatischen Ansatz bevorzugen, dann könnten Sie alle Div auf der Seite mit Attribut hidden und entfernen Sie das Attribut, drucken Sie Ihr Dokument, als das Attribut zurück.

var hideDivs = document.querySelectorAll("div[hidden]"); 
+0

Ich habe beides versucht. Keine funktioniert. Ich konvertiere tatsächlich das 'div' in pdf, drücke es nicht aus. Die Medienabfrage in Ihrer Antwort scheint zum Drucken zu sein. –

+0

Ich weiß nicht, wie Ihr 'makePdf()' funktioniert, wenn Sie irgendeine Art von lib verwenden, um den Seiteninhalt direkt in pdf umzuwandeln, dann müssen Sie den zweiten Weg benutzen: die Seite mit 'querySelectorAll' vor Aufruf ändern das 'makePdf()'. –

+0

Okay. Cool. Vielen Dank! –

0

So mit Mario Alexandro Santini Vorschlag des in den Kommentaren, konnte ich das Problem lösen:

Sie so etwas wie verwenden könnte. Ich benutzte jquery-unhide die div in meiner makePdf() Funktion dann verstecken es wieder nach jsPDF und html2canvas hatten ihre "Magie" getan:

function makePdf() { 
    $("#divToPdf").attr("hidden", false); 
    ... 
    $("#divToPdf").attr("hidden", true); 
} 

Danke Jungs!