尝试将Google字体与Laravel DomPDF 0.7。*一起使用,但我很难让它们显示出来。事实上,我无法使用任何自定义字体,而不仅仅是Google字体。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="https://fonts.googleapis.com/css?family=Caveat" rel="stylesheet">
<style type="text/css">
.signature {
font-family: 'Caveat', cursive !important;
font-size: 30px;
}
</style>
</head>
<body>
<p class="signature">Name</p>
</body>
</html>
这就是显示的内容,它应该是手写字体。
在dompdf.php
配置文件中,字体目录和字体缓存都是可写的。
"DOMPDF_FONT_DIR" => storage_path('app/tmp/'),
"DOMPDF_FONT_CACHE" => storage_path('app/tmp/'),
这是控制器代码:
public function download(Request $request, string $contractKey)
{
$item = Item::findOrFail($contractKey);
$body = @$item->contract;
$pdf = PDF::loadView('pdf.contract', [
'body' => $this->cleanContract($body),
'docId' => md5($item->id),
'item' => $item,
'ip' => $ip = @$request->ips()[1] ?: $request->ip(),
]);
$pdf->output();
$dom_pdf = $pdf->getDomPDF();
$canvas = $dom_pdf->get_canvas();
$canvas->page_text($canvas->get_width() - 70, $canvas->get_height() - 30, "Page {PAGE_NUM} of {PAGE_COUNT}", null, 10, [0, 0, 0]);
return $pdf->stream();
}
答案 0 :(得分:0)
我只能通过在我的服务器上使用字体来实现这一点。
你需要告诉DomPDF字体在哪里。
public function download(Request $request, string $contractKey)
{
$item = Item::findOrFail($contractKey);
$body = @$item->contract;
$pdf = PDF::loadView('pdf.contract', [
'body' => $this->cleanContract($body),
'docId' => md5($item->id),
'item' => $item,
'ip' => $ip = @$request->ips()[1] ?: $request->ip(),
]);
$pdf->output();
$dom_pdf = $pdf->getDomPDF();
// set font dir here
$dom_pdf->set_option('font_dir', storage_path('fonts/'));
$canvas = $dom_pdf->get_canvas();
$canvas->page_text(
$canvas->get_width() - 70,
$canvas->get_height() - 30,
"Page {PAGE_NUM} of {PAGE_COUNT}", null, 10, [0, 0, 0]);
return $pdf->stream();
}
将字体下载到storage/fonts
。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
.signature {
font-family: 'Caveat', cursive;
font-size: 30px;
}
</style>
</head>
<body>
<p class="signature">Name</p>
</body>
</html>
我使用DOMPDF Wrapper for Laravel 5将其与Laravel集成。这很容易。
您需要从!important
移除'Caveat', cursive; !important;
,然后查看jsfiddle。还有一个额外的分号。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="https://fonts.googleapis.com/css?family=Caveat" rel="stylesheet">
<style type="text/css">
.signature {
font-family: 'Caveat', cursive;
font-size: 30px;
}
</style>
</head>
<body>
<p class="signature">Name</p>
</body>
</html>