mpdf обрезные метки и поля под обрез

Я только сегодня начал изучать mPDF (так что для меня это все новое). Я немного застрял в том, как я могу заставить работать метки обрезки и поля за обрез. Я не вижу их в выходном PDF. Обычно, когда я делаю файлы для принтеров (т.е. не самого принтера, а типографии), я должен включать метки выпуска под обрез и обрезки, так как они нужны изображениям для обложек. Это то, что у меня есть сейчас

require_once __DIR__ . '/../../vendor/autoload.php';
$pdfOptions = array(
    'mode'                  => 'utf-8', 
    'format'                => 'A4', 
    'orientation'           => 'P',
    'printers_info'         => true,
    'mirrorMargins'         => true,
    'bleedMargin'           => 3,
$pdf = new \Mpdf\Mpdf( $pdfOptions );
$styles = file_get_contents( __DIR__ . '/css/print.css');
$content = '<div>Some content</div>';
$pdf->SetDisplayMode( 'fullpage','continuous' );
$pdf->img_dpi = 300;
$pdf->WriteHTML( $styles, 1 );
$pdf->WriteHTML( $content, 2 );
$pdf->Output( 'test.pdf', "I" );

person axelra82    schedule 07.05.2018    source источник


Ответы (2)


Самый простой способ включить метки обрезки и контролировать выход документа за обрез в mPDF — это использовать параметр CSS @ страница. mPDF поддерживает свойства CSS marks и size, что упрощает вы, чтобы включить метки обрезки и контролировать кровотечение.

Следующий пример кода добавит 3 мм обрез вокруг документа:

$mpdf = new \Mpdf\Mpdf([
    'mode' => 'utf-8',
    'format' => 'A4',
    'orientation' => 'P',
    'img_dpi' => 300,
]);

$mpdf->SetDisplayMode('fullpage');

$mpdf->WriteHTML('
<style>
    @page {
        size: 204mm 291mm;
        marks: crop;
    }
</style>

Content
');

$mpdf->Output();

Если вы хотите добавить больший выпуск за обрез, уменьшите значения параметра size. Кроме того, добавьте свойство margin к @page для управления полями вокруг области печати.

person Jake Jackson    schedule 09.05.2018
comment
Спасибо за ответ! Я уже некоторое время играюсь с этими настройками. Все еще пытаюсь разобраться во всем :) Но, по крайней мере, теперь я понимаю, что настройки выпуска за обрез не добавляют автоматически необходимое пространство, а скорее увеличивают размер (поскольку я хочу, чтобы окончательный результат соответствовал формату A4 (210x297). )). Итак, в моем случае я добавил пространство, чтобы оно заработало. Спасибо еще раз! Очень помог мне в правильном направлении; ) - person axelra82; 10.05.2018

Для тех, кто еще сталкивался с этим - помните, что метки обрезки / кровотечения должны соответствовать размеру страницы, который будет использовать типография. Поэтому, если вы пытаетесь распечатать PDF-файл формата A4 (210 мм x 297 мм), атрибут размера, указанный в ответе Джейка, должен быть 210 x 297, а фактический размер документа необходимо увеличить. Обычным стандартом является добавление около 5 мм пространства со всех сторон документа, что означает, что ваш документ должен быть на 10 мм выше и на 10 мм шире.

Например:

<?php
function generate_pdf($content, $pdf_width, $pdf_height, $bleed = false) {
    $bleed_size = 10; //5mm either side of the doc
    $width      = ($bleed ? $pdf_width + $bleed_size : $pdf_width); //if bleed - increase by 10mm
    $height     = ($bleed ? $pdf_height + $bleed_size : $pdf_height); //if bleed - increase by 10mm
    
    $mpdf       = new \Mpdf\Mpdf([
        'mode'          => 'utf-8',
        'format'        => [$width, $height],
        'img_dpi'       => 300,

    ]);

    $mpdf->SetDisplayMode('fullpage');

    if($bleed) {
        $content = add_bleed($content, $pdf_width, $pdf_height);
    }

    $mpdf->WriteHTML($content);
    $mpdf->Output();
}


function add_bleed($content, $width, $height) {
    $bleed = '
<style>
    @page {
        size: '.$width.'mm '.$height.'mm;
        marks: crop;
        margin: 0;
    }
</style>
';
    return $bleed.$content;
}

После сохранения вышеуказанных функций вы можете просто использовать следующую функцию для создания PDF-файла с метками обрезки.

<?php
generate_pdf('<h1>test</h1>', 210, 297, $bleed); //a4 == 210x297
person Frits    schedule 08.09.2020