9
votes

Phantomjs ne fait pas de pied à pied avec des styles personnalisés

J'ai l'exemple suivant:

./phantomjs rasterize.js index.html test.pdf


0 commentaires

3 Réponses :


3
votes

De mon expérience passée, Phantomjs ne prend pas en charge les styles dans l'en-tête / pied de page personnalisé.

La seule solution que j'ai trouvée est d'appliquer un style en ligne comme celui-ci: P>

var page = require('webpage').create(),
    system = require('system');

if (system.args.length < 3) {
    console.log('Usage: printheaderfooter.js URL filename');
    phantom.exit(1);
} else {
    var address = system.args[1];
    var output = system.args[2];
    page.viewportSize = { width: 600, height: 600 };
    page.paperSize = {
        format: 'A4',
        margin: "1cm",
        footer: {
        height: "1cm",
        contents: phantom.callback(function(pageNum, numPages) {
            return "<h1 style='text-align:right'>Footer" + pageNum + " / " + numPages + "</h1>";
        })
        }
};
page.open(address, function (status) {
    if (status !== 'success') {
        console.log('Unable to load the address!');
    } else {                
        window.setTimeout(function () {
            page.render(output);
            phantom.exit();
        }, 200);
    }
});
}


1 commentaires

Oui, je connais cette solution mais j'ai besoin de le faire fonctionner en utilisant des classes CSS



9
votes

Nous savons que les classes ne fonctionnent pas, mais les styles en ligne font. Ce que nous pouvons faire est de remplacer la classe avec le style calculé.

Voici une fonction qui prendra un morceau de HTML, crée un élément temporaire dans le corps avec le HTML, calculez le style de chaque élément avec une classe, ajoutez le style calculé en ligne et renvoyer le nouveau HTML. xxx

appelez simplement cette fonction dans votre pied de page: xxx

Vous devrez déplacer tout cela à l'intérieur page.open. () .

J'ai testé et le pied de page est aligné à droite.


1 commentaires

Cela ressemble à la solution idéale pour rendant les en-têtes / pieds de page, mais en V1.9.7 Cela semble "vider" le document.bon après l'annexe. Probablement un bug de fantomjs. Dans quelle version avez-vous testé cela?



4
votes

J'ai une mise à jour de Excellente réponse en MAK pour fantomjs 1.9.7.

Cette version corrige:

  • circonvez le bug que 'vierge est le document parent (Phantomjs 1.9.7)
  • Mix Mixups Lorsque les styles sont imbriqués (première profondeur - première traversée)
  • fonctionne également lorsque les étiquettes n'ont pas de cours xxx

0 commentaires