Я создаю 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, мне нужно, чтобы эта опция была включена, есть ли способ решить эту проблему?
Спасибо.
@HirenGohel я получил код из документации dompdf PDF :: setOptions (['dpi' => 150]); и он работает, но проблема в том, что изображение исчезает, когда я включил эту опцию
Да, они предоставили это в документации, используйте php artisan vendor:publish для создания файла конфигурации, расположенного в config/dompdf.php, который позволит вам определять локальные конфигурации для изменения некоторых настроек (бумага по умолчанию и т. д.). dd($snappy->getOptions()); предоставляет вам параметры, которые вы установили.
Не могли бы вы использовать это для образа и попробовать еще раз: <img src = "{{ URL::asset('images/td.jpg') }}" style = "width:100%"> Убедитесь, что образ td.jpg находится в папке images!
Теперь он работает?
@HirenGohel Я исправил это, вызвав общедоступный путь и объединив изображение Большое спасибо за ваше драгоценное время
Ок, отлично! URL::asset работает?
@HirenGohel на самом деле это не сработало
Без проблем. Рад, что вы это исправили!






Я исправил это, вызвав общедоступный путь и объединив путь к изображению, на мой взгляд, как
{{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);
Вы можете получить все параметры, подобные этому:
dd($snappy->getOptions());Сначала проверьте, установлены ли параметры pdf для dpi или нет?