web-dev-qa-db-ja.com

dompdf HTML PDF-ページのマージンを設定できません

バージョン:0.6.0 beta 3

私はあらゆる方法でdompdfにページのマージンを設定しようとしました。私は章に分かれた多くのテキストを含む長いページを持っています...

私のCSSは次のようなものです:

#wrapper{
    padding:8px;
}

/* other styles... */

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

pHPが

<?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));

?>

しかし、私が得るのはマージンのないページです!!! #wrapperのパディングのみが適用されます...そして、それらはPDF全体の最初と最後にのみ適用されます...

私は何か間違っていますか?

PS-下マージンだけが適用されるようです...しかし、私にはわかりません...

PPS-このCSSも成功しませんでした:body {margin-top:40px; } html {margin-top:40px; } @page {margin-top:40px; }

18

このバージョンのdompdfでは、bodyも@pageも機能しないことがわかりました。

問題はメインCSSにあり、ここですべてのタイプを次の行に入れました。

*{margin:0;padding:0}

PDFのマージンはHTMLのマージンに基づいて決定されるため、その行をグローバルセレクターで削除し、次のものに置き換えました。

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

これは「予期しない」ものとして機能し、すべてのページで適切なマージンが得られます。

今、私は幸せです。誰が私の質問に賛成票を投じるのか本当にわかりません。それはとても重要だと思います!実際、インターネットのいたるところに間違った答えがあります(本文または@pageマージンを使用)。

解決策:CSS html {margin:...}で使用

41

これは私の問題を修正しました:

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