logo
01.04.2021 09:58
1
Ahoj,
začal jsem používat MPDF, ale mám problém do nastavené velikosti PDF vložit obsah, který tento rozměr splňuje. V podstatě i když mu nastavím 70mm a chci dát 3x vedle sebe, je tento 70mm obsah větší.
Nevíte proč?

Výstup PDF:

MPDF nastavím na velikost A4:
PHP kód:
$mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8', 'format' => [210, 297]]); 
CSS nastavím tak, aby PAGE měla taktéž shodnout velikosti 210x297mm, přesto mně MPDF velikostí ignoruje.
PHP kód:
@page {
  size: 210mm 297mm;
  margin: 0;
}
html {
  box-sizing: border-box;
}
*,
*:
before,
*:
after {
  box-sizing: inherit;
}
{
  margin: 0px;
}
body {
  font-family: Helvetica;
  font-size: 3mm;
  margin: 0mm;
  padding: 0mm;
}

.
label {
  width: 70mm;
  height: 37mm;
  margin: 0mm;
  float: left;
  padding: 5px;
  break-inside: avoid;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  border: 1px solid black;

HTML:
<body>
<div class="label">
  <p>Cena: 12345 Kč</p>
</div>

<div class="label">
  <p>Cena: 12345 Kč</p>
</div>

<div class="label">
  <p>Cena: 12345 Kč</p>
</div>

<div class="label">
  <p>Cena: 12345 Kč</p>
</div>
</body>
01.04.2021 10:25
2
Při vytváření new mpdf nedefinujes marginy. V základu tam nějaké jsou. Koukni na to https://mpdf.github.io/headers-foote...p-margins.html

Není to otázka css, ale při vytvareni te třídy v php.

Umí ti pozlobit :-)
01.04.2021 10:49
3
Kód:
$mpdfConfig = array(
  'mode' => 'utf-8', 
  'format' => 'A4',
  'margin_left' => 0,
  'margin_right' => 0,
  'margin_top' => 0,
  'margin_bottom' => 0,
  'margin_header' => 0,    // mm
  'margin_footer' => 0,    // mm
  'orientation' => 'P'    
);
$mpdf = new \Mpdf\Mpdf($mpdfConfig);
Vyzkoušel jsem nastavit veškerý margin na 0, ale je to stále stejné. Vizuálně ten box se prostě tváří větší a 3 vedle sebe se nevlezou, což je mně záhadou. Vleze se tam pouze 66mm na šířku box, box 67mm už nikoliv.
01.04.2021 10:51
4
Tady pridam svou zkusenost a verim, ze pomuze.

Kód:
        $mpdf = new \Mpdf\Mpdf([

        ]);

        $mpdf->AddPageByArray([
            'margin-left' => 25,
            'margin-right' => 25,
            'margin-top' => 55,
            'margin-bottom' => 30,
        ]);
Takze hod marginy na 0. Jinak je to fakt super knihovna :)

edit: ve tve ukazce mas tu definici podle me spatne, nedela se to pri tvorbe objektu
01.04.2021 12:29
5
Původně odeslal musil.david
Tady pridam svou zkusenost a verim, ze pomuze.

Kód:
        $mpdf = new \Mpdf\Mpdf([

        ]);

        $mpdf->AddPageByArray([
            'margin-left' => 25,
            'margin-right' => 25,
            'margin-top' => 55,
            'margin-bottom' => 30,
        ]);
Takze hod marginy na 0. Jinak je to fakt super knihovna :)

edit: ve tve ukazce mas tu definici podle me spatne, nedela se to pri tvorbe objektu
Jde to i při vytváření a ne jen přidání nové stránky, viz doc https://mpdf.github.io/reference/mpd...construct.html

K tématu, jakou verzi mpdf používáš? Nejnovější? U jednoho svého projektu mám verzi 8 a funguje to takto:

PHP kód:
$pdf = new mPDF([
            
'mode' => 'utf-8',
            
'format' => [70$pdfHeight], // 5 per item
            
'default_font_size' => 0,
            
'default_font' => '',
            
'margin_left' => 0,
            
'margin_right' => 0,
            
'margin_top' => 0,
            
'margin_bottom' => 0,
            
'margin_header' => 0,
            
'margin_footer' => 0,
            
'orientation' => 'P']); 
edit: pamatuju si že u starší verze to nebylo margin_left ale margin-left = podtržítko vs pomlčka. Tak možná zkus i tuhle variantu
01.04.2021 19:39
6
Jenže ty tam nezkoušíš dávat 70mm div, ale 70mm+10px

Kód:
.label {
  width: 70mm;
  padding: 5px;
}
CSS Box Sizing