【发布时间】:2019-12-20 15:41:48
【问题描述】:
我在 Laravel 中使用 barryvdh/laravel-dompdf 包来生成 PDF 用于打印。
当我下载 PDF 时出现此错误..(加载大约 10 秒然后出错)
无法访问此站点连接已重置。
尝试:检查连接检查代理和防火墙正在运行 Windows 网络诊断 ERR_CONNECTION_RESET
该 URL 是一个有效的链接,因为我使用相同的链接/视图来构建 PDF。
这是我的控制器代码:
use PDF;
...
public function haitiKidPdf($childId){
$haitiKid = Kid::findOrFail($childId);
$pdf = PDF::loadView('admin.cdp.haiti-kid-pdf', compact('haitiKid'));
return $pdf->download('haiti-kids.pdf');
}
这是我用来创建页面和提取数据的。 (这就是我知道 URL 正确的方式。)
public function haitiKidPdf($childId){
$haitiKid = Kid::findOrFail($childId);
return view('admin.cdp.haiti-kid-pdf',compact('haitiKid'));
}
在我看来 (haiti-kid-pdf.blade.php) 我正在使用大量 PHP 来动态填充所有必要的数据。
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
<title>PDF</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="{{ asset('/css/app.css') }}" rel="stylesheet">
<style>
body {
font-family: 'Muli', sans-serif;
background-color: #1E1F26 !important;
}
.cutline {
position: absolute;
top: 50%;
left: 50%;
transform: translate3d(-50%, -50%, 0);
border-right: 1px dotted rgba(21, 87, 36, 0.25);
z-index: 99999;
width: 5.5;
height: 8.5in;
....
@media print {
* {
-webkit-print-color-adjust: exact;
}
html {
background: none;
padding: 0;
}
body {
box-shadow: none;
margin: 0;
}
...
</style>
</head>
...
<img alt="Name Here" src="{{asset("storage/images/cdp/$haitiKid->cin/profile-img/$haitiKid->child_img")}}">
</div>
</div>
</div>
<!-- END KID IMAGE -->
<div class="kid-name-box relative">
<div class="kid-name absolute pin-c-y ml-2 font-black leading-none text-navy-500">
<span class="first-name">{{ $haitiKid->first_name }}</span>
<span class="last-name">{{ $haitiKid->last_name }}</span>
</div>
</div>
<div class="slot-box absolute bg-red-500">
<div class="slot-box-name absolute pin-c-y ml-2">
@php
$numReceived = $haitiKid->sponsors_received;
$numNeeded = $haitiKid->sponsors_needed - $numReceived;
@endphp
@for($i = 0; $i < $haitiKid->sponsors_needed; $i++ )
@if($numReceived-- > 0)
<span class="slot-circ relative"></span>
@else
<span class="slot-circ-outline relative"></span>
@endif
@endfor
<span class="font-black leading-none text-white uppercase">{{ $numNeeded }} {{ str_plural('Slot', $numNeeded) }} Available</span>
</div>
</div>
etc...
}
基本上生成这个以在 11 英寸 x 8.5 英寸的纸上打印出来。
https://codepen.io/daugaard47/full/pozgdeM
我的代码不正确还是需要在我的 php.ini 文件中安装其他内容?
- 我使用的是 PHP 7.2.2
- 目前在本地主机上
- 我已将 Enable inline PHP 设置为 true
"enable_php" => true,dompdf.php 配置文件 - 如果我加载视图然后选择“打印”>“打印到 PDF”,结果会很好,但这违背了我想要完成的目的。
在这几天。任何帮助将不胜感激。
【问题讨论】:
-
好的,问题是我引入了我所有的 css 样式
<link href="{{ asset('/css/app.css') }}" rel="stylesheet">这导致了超时问题。我删除了 app.css,然后开始使用内联样式设置每个组件的样式。仍在寻找更好的方法。