Laravel Dompdf Set DPI удаляет изображение из PDF

Я создаю PDF-файл с помощью berryvdh/dompdf и отправляю его как вложение электронной почты:

$pdf = PDF::loadView($view, compact('******'));
$pdf->setOptions(['dpi' => 300 ]);
$output = $pdf->save('pdf/' . $name_pr);

В функции электронной почты:

$message->attach($file, [
                        'as' => $reference.'.pdf',
                        'mime' => 'application/pdf',
                    ]);

И в моем представлении в формате PDF:

<!DOCTYPE html>
<html>

<head>
    <meta content = "text/html; charset=UTF-8" http-equiv = "content-type">
    <style type = "text/css">
        body{position: relative;}
        .pa{
            position: absolute;
            top: 0;
            left: 0;
            z-index: 2;
            font-family:'Times New Roman';
            padding: 0 8px;
            font-size: 35px;
            height: 42px;
            /*        background: red    */

        }
        .ref-no{
            width: calc(23.6% - 16px);
            left: 31.3%;
            top: 13.01%;
        }
        .vrn{
            left: 31.3%;
            top: 14.9%;
            width: 22.8%;
        }
        .nop{
            left: 31.3%;
            top: 16.9%;
            width: 63.8%;
        }
        .nro{
            left: 31.3%;
            top: 18.9%;
            width: 63.8%;
        }
        .cn{
            left: 31.3%;
            top: 20.6%;
            width: 22.8%;
        }
        .add{
            left: 31.3%;
            top: 22.6%;
            width: 63.8%;
        }
        .pc{
            left: 31.3%;
            top: 24.6%;
            width: 22.8%;
        }
        .nic{
            left: 31.3%;
            top: 26.6%;
            width: 22.8%;
        }
        .en{
            left: 31.3%;
            top: 28.5%;
            width: 22.8%;
        }
        .ec{
            left: 31.3%;
            top: 30.3%;
            width: 22.8%;
        }
        .mm{
            left: 31.3%;
            top: 32.2%;
            width: 22.8%;
        }
        .dr{
            left: 31.3%;
            top: 34.1%;
            width: 22.8%;
        }
        .from-day{
            left: 36.5%;
            top: 37%;
            width: 4%;
            letter-spacing: 30px;
            padding-left: 20px;
        }
        .from-month{
            left: 43.5%;
            top: 37%;
            width: 4%;
            letter-spacing: 30px;
            padding-left: 20px;
        }
        .from-year{
            left: 50.5%;
            top: 37%;
            width: 9.5%;
            letter-spacing: 35px;
            padding-left: 20px;
        }

        .to-day{
            left: 65.6%;
            top: 37%;
            width: 4%;
            letter-spacing: 30px;
            padding-left: 20px;
        }
        .to-month{
            left: 72.7%;
            top: 37%;
            width: 4%;
            letter-spacing: 30px;
            padding-left: 20px;
        }
        .to-year{
            left: 79.7%;
            top: 37%;
            width: 9.5%;
            letter-spacing: 35px;
            padding-left: 20px;
        }
        .tc{
            left: 31.3%;
            top: 40.1%;
            width: 22.8%;
        }
        .sticker-sno {
            right: 11%;
            left: auto;
            top: 72.4%;
            height: 35px;
            font-size: 30px;
            width: 14%;
            padding-left: 10px;
        }
        .sticker-rno {
            left: auto;
            top: 73.8%;
            height: 35px;
            font-size: 30px;
            width: 23%;
            right: 10.6%;
        }
        .sticker-cno {
            left: auto;
            top: 75.1%;
            height: 35px;
            font-size: 30px;
            width: 23%;
            right: 10.6%;
        }
        .sticker-cp {
            left: auto;
            top: 76.3%;
            height: 35px;
            font-size: 30px;
            width: 23%;
            right: 10.6%;
        }

    </style>
</head>

<body>
    <img src = "{{asset('images/td.jpg')}}" alt = "" style = "width:100%">
    <div class = "ref-no pa">155dds5544</div>
    <div class = "vrn pa">A0E4974</div>
    <div class = "nop pa">Abbas Abdulla</div>
    <div class = "nro pa">Abbas Abdulla asas sadasd dasdsad</div>
    <div class = "cn pa">9100074</div>
    <div class = "add pa">157/85 A, Sassssss, asdawdw, wewdwds, sssdw</div>
    <div class = "pc pa">2547852</div>
    <div class = "nic pa">585441154311</div>
    <div class = "en pa">84561215842131</div>
    <div class = "ec pa">250cc</div>
    <div class = "mm pa">TKS2587AS</div>
    <div class = "dr pa">22/08/2016</div>

    <div class = "from-day pa">14</div>
    <div class = "from-month pa">08</div>
    <div class = "from-year pa">2016</div>

    <div class = "to-day pa">22</div>
    <div class = "to-month pa">04</div>
    <div class = "to-year pa">2025</div>

    <div class = "tc pa">8049841564</div>

    <div class = "sticker-sno pa">8049841564</div>
    <div class = "sticker-rno pa">789456513</div>
    <div class = "sticker-cno pa">548932115</div>
    <div class = "sticker-cp pa">10 Years</div>

</body>

</html>

Но при получении письма изображение удаляется. И без $pdf->setOptions(['dpi' => 300 ]);pdf загружается с изображением, но настройте выравнивание pdf, мне нужно, чтобы эта опция была включена, есть ли способ решить эту проблему?

Спасибо.

Вы можете получить все параметры, подобные этому: dd($snappy->getOptions()); Сначала проверьте, установлены ли параметры pdf для dpi или нет?

Hiren Gohel 11.12.2018 06:48

@HirenGohel я получил код из документации dompdf PDF :: setOptions (['dpi' => 150]); и он работает, но проблема в том, что изображение исчезает, когда я включил эту опцию

Yugaprashanthan 11.12.2018 07:02

Да, они предоставили это в документации, используйте php artisan vendor:publish для создания файла конфигурации, расположенного в config/dompdf.php, который позволит вам определять локальные конфигурации для изменения некоторых настроек (бумага по умолчанию и т. д.). dd($snappy->getOptions()); предоставляет вам параметры, которые вы установили.

Hiren Gohel 11.12.2018 07:03

Не могли бы вы использовать это для образа и попробовать еще раз: <img src = "{{ URL::asset('images/td.jpg') }}" style = "width:100%"> Убедитесь, что образ td.jpg находится в папке images!

Hiren Gohel 11.12.2018 07:07

Теперь он работает?

Hiren Gohel 11.12.2018 07:20

@HirenGohel Я исправил это, вызвав общедоступный путь и объединив изображение Большое спасибо за ваше драгоценное время

Yugaprashanthan 11.12.2018 07:45

Ок, отлично! URL::asset работает?

Hiren Gohel 11.12.2018 11:17

@HirenGohel на самом деле это не сработало

Yugaprashanthan 12.12.2018 05:57

Без проблем. Рад, что вы это исправили!

Hiren Gohel 12.12.2018 05:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
9
1 570
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

{{public_path().'/images/td.jpg'}}

Спасибо всем, кто отвечал на мой вопрос

Я решил эту проблему, преобразовав изображение в base64. В моем случае я просто использовал конвертер, который нашел в Google, потому что мое изображение было статическим, но вы можете использовать его, если вам нужно преобразовать динамически.

$path = 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);

источник: Как преобразовать изображение в кодировку base64?

Другие вопросы по теме