2016-02-11 65 views
10

Sto usando this per convertire l'html in PDF. Le conversioni sono davvero buone.Ma il problema è aggiungere intestazione e piè di pagina nelle pagine PDF.Nelle opzioni se aggiungo il testo dell'intestazione mi ha dato il risultato che mi aspettavo.Aggiungi immagine nell'intestazione utilizzando il modulo nodo html-pdf

//Options 

    var options = { 
    "header": { 
     "height": "45mm", 
     "contents": "<div style='text-align: center;'>Author: Marc Bachmann</div>" // If i add image in content it wont work 
    // sample i tried 
     }, 
     "footer": { 
     "height": "28mm", 
     "contents": "<span style='color: #444;'>{{page}}</span>/<span>{{pages}}</span>" 
     } 
    } 
// Tried this in contents <img src="image path" /> 
    var result = <div class="container"> HTML CONTENT</div>'; 

     pdf.create(result, options).toFile(fileName + ".pdf", function(err, res) { 
     if (err) { 
     console.error(err); 
     callback(); 
     } 

poi se aggiungere il tag immagine nell'intestazione (contenuti) opzione che non ha ottenuto l'immagine nel PDF generato. Potete per favore darmi una soluzione per questo grazie.

risposta

9

E 'possibile aggiungere l'immagine nell'intestazione opzioni. 1. Caricare l'immagine nel corpo html con lo stile "display: none". 2. Quindi aggiungi l'immagine nell'intestazione delle opzioni In questo modo l'immagine viene memorizzata nella cache e può allegare l'immagine nell'intestazione.

var options = { 
    "format": 'Letter', 
    "orientation": "portrait", 
    "header": { 
    "contents": "<img src='image path' />", 
     "height": "30mm" 
    }, 
    "footer": { 
    "contents": footer 
    } 
} 
pdf.create("<div style='display:none'><img src='image path' /></div>", options).toFile("sample.pdf", function(err, res) { 
     if (err) { 
       console.error(err); 
       callback(); 
     } 
}); 
+0

Grazie:). Il suo lavoro come un fascino .. Questo è quello che mi aspettavo .... Grazie mille – venkats

+0

questa soluzione non è per html-pdf ma per html in pdf .... – Rahul

1

Facendo riferimento alla this issue sul GitHub, non si può mettere la vostra immagine direttamente in options.header, bisogna metterlo nel corpo all'interno di un <div id="pageHeader"></div>:

var pdf = require('html-pdf'); 
var path = require('path'); 

// this is very important, you have to put file:// before your path 
// and normalize the resulting path 
var imgSrc = 'file://' + __dirname + '/350x120.png'; 
imgSrc = path.normalize(imgSrc); 
// or var imgSrc = path.join('file://', __dirname, '/350x120.png'); 

// Options 
var options = { 
    "header": { 
     "height": "45mm", 
     "contents": "" 
    }, 
    "footer": { 
     "height": "28mm", 
     "contents": "<span style='color: #444;'>{{page}}</span>/<span>{{pages}}</span>" 
    } 
    } 
// put your entire header here and the content of the page outside the <div id="pageHeader"></div> 
var result = "<div id='pageHeader'><img src='" + imgSrc + "' /><div style='text-align: center;'>Author: Marc Bachmann</div></div>"; 
result += "<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>"; 
var fileName = __dirname + '/test.pdf'; 
pdf.create(result, options).toFile(fileName, function(err, res) { 
    if (err) { 
    console.error(err); 
    } 
}); 

Con questo codice, ottengo questo pdf:

generated pdf

+0

Grazie per la risposta ... Qui si sono creati l'html e passarlo al Package.But ho bisogno di impostare l'immagine da intestazione opzioni (in modo che replicherà tutti i PDF generati) .Così è possibile fare l'immagine impostata dall'intestazione delle opzioni stessa? – venkats

+0

Auto-quoting me stesso: * non è possibile inserire l'immagine direttamente in options.header *. È possibile memorizzare il '

' in una variabile e aggiungerlo al corpo di tutto il tuo pdf. – Shanoor

+0

Quindi dovremmo avere l'immagine nello stesso html per ogni pagina?. Ma il testo può ancora essere ripetuto nell'intestazione delle opzioni. – venkats