dompdf HTML в PDF - невозможно установить поля страницы

версия: 0.6.0 бета 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; }


person Nereo Costacurta    schedule 04.11.2013    source источник
comment
попробуйте использовать <tag style="margin: 0.2in 0.5in 0.2in 0.5in;"></tag> как <body style="margin: 0.2in 0.5in 0.2in 0.5in;"></body>   -  person Alsemany    schedule 05.11.2013
comment
Спасибо за ваш ответ! Я понял, что я делаю неправильно после нескольких шагов сегодня. Я разместил решение.   -  person Nereo Costacurta    schedule 05.11.2013


Ответы (2)


Я понял, что ни body, ни @page не работают в этой версии dompdf.

проблема была в основном CSS, где я каждый раз помещал эту строку:

*{margin:0;padding:0}

Я обнаружил, что поля PDF определяются на основе полей HTML, поэтому я удалил эту строку с помощью глобального селектора и заменил ее на:

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

Это работает как «неожиданное», и я получаю правильное поле на каждой странице.

ТЕПЕРЬ Я СЧАСТЛИВ. Я действительно не знаю, кто проголосовал против моего вопроса, я думаю, что это очень важно! На самом деле везде в Интернете есть неправильный ответ (используя body или @page margin).

решение: используйте в CSS html{margin:...}

person Nereo Costacurta    schedule 05.11.2013
comment
Похоже, есть проблема с использованием * и попыткой установить поля страницы. Нам нужно изучить это. Вы по-прежнему можете использовать селектор *, просто форсируйте поля страницы, добавив !important, например @page { margin: 40px 50px !important; }. - person BrianS; 05.11.2013
comment
К вашему сведению, dompdf считает элемент HTML и @page одним и тем же. В v0.6.0 beta 3 есть ошибка, из-за которой вам приходилось включать пробел после селектора @page< /а>. Это было исправлено для следующего выпуска. - person BrianS; 05.11.2013
comment
Пожалуйста. Мне нужно изменить свое заявление о @page по сравнению с элементом HTML. Я не думаю, что они одинаковы, но влияют на документ аналогичным образом. Нам нужно решить, хотим ли мы, чтобы эти два селектора представляли одну и ту же сущность. - person BrianS; 07.11.2013

Это исправило мою проблему:

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