web-dev-qa-db-fra.com

dompdf HTML à PDF - impossible de définir la marge de la page

version: 0.6.0 beta 3

J'ai essayé de toutes les manières de faire en sorte que dompdf définisse la marge de la page. J'ai une longue page avec beaucoup de texte, divisée en chapitres ...

mon css est quelque chose comme:

#wrapper{
    padding:8px;
}

/* other styles... */

@page{margin: 0.2in 0.5in 0.2in 0.5in;}

quand le php est

<?php
ob_start(); // begin collecting output
include 'makemypdf.php'; // this page output the html
$html = ob_get_clean(); // retrieve output from makemypdf.php and stop buffering


require_once("dompdf/dompdf_config.inc.php");

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("sample.pdf", array("Attachment" => false));

?>

mais ce que je reçois, c'est une page sans marges !!! seuls les rembourrages de #wrapper sont appliqués ... et ils ne sont appliqués qu'au début et à la fin du PDF entier ...

Je fais quelque chose de mal?

PS - il semblerait que seule la marge inférieure soit appliquée ... mais je ne suis pas sûr ...

PPS - J'ai essayé sans succès aussi ce css: corps { marge supérieure: 40 px; } html { marge supérieure: 40 px; } @page { marge supérieure: 40 px; }

16
Nereo Costacurta

J'ai découvert que ni body ni @page ne fonctionnaient dans cette version de dompdf.

le problème était dans le CSS principal, où je mets chaque tyme cette ligne:

*{margin:0;padding:0}

Je découvre que les marges du PDF sont définies à la base de la marge du HTML. J'ai donc supprimé cette ligne avec le sélecteur global et remplacé par

th,td,p,div,b ... {margin:0;padding:0}
html{margin:40px 50px}

Cela fonctionne comme "inattendu" et j'obtiens la bonne marge dans chaque page.

MAINTENANT JE SUIS CONTENT. Je ne sais vraiment pas qui a voté contre ma question, je pense que c'est très important! En fait, partout sur Internet, la réponse est fausse (utilisation de body ou de la marge @ page).

solution: utiliser en CSS html {margin: ...}

38
Nereo Costacurta

Cela a résolu mon problème:

        @page {
            margin: 0px 0px 0px 0px !important;
            padding: 0px 0px 0px 0px !important;
        }
0
servetoz32