我使用DOMPDF(v 0.5.2)将html页面转换为pdf文件。
pdf文件在PHP脚本运行后出现(如预期的那样),但没有样式应用于任何内容。据我所知,浮动属性不适用于DOMPDF,所以我必须做一些工作来解决这个问题,但是甚至没有应用字体样式。
我尝试了三种包含样式的方法: 附上样式表,
<link href="styles.css" rel="stylesheet" type="text/css">
在标题中写样式
<style>...</style>
和内联样式。
<div class="..." style="...">
创建pdf的php文件看起来像这样......
<?php
ob_start();
?>
<html>
<head>
<link href="flhaha.css" rel="stylesheet" type="text/css">
</head>
<body>
... content (divs, etc)
</body>
</html>
<?php
require_once("../../scripts/dompdf/dompdf_config.inc.php");
$dompdf = new DOMPDF();
$dompdf->load_html(ob_get_clean());
$dompdf->render();
$dompdf->stream('test.pdf');
?>
内容中的图片可以正常加载并在pdf打开时正确显示,但仍然没有样式。
提前致谢!
编辑#1:上面的标签是“风格”,而不是“风格”。修正了错字。
答案 0 :(得分:4)
dompdf v0.5.x不支持浮点数。 v0.6.0确实如此,但它仍然是一个必须在配置中启用的实验性功能。在测试你的文档后,我可以说dompdf不能很好地处理它。如果你想坚持使用dompdf,你可以考虑使用表,因为你的文档本质上是表格式的。
答案 1 :(得分:1)
可以通过在<style>
元素而不是<styles>
元素之间包含样式来创建内部样式表。
以下stmt是错误的:
<styles>...</styles>
应该是:
<style> ... </style>
和内联样式应如下所示:
<div class="className" style="color:red;text-align: left;">
和外部样式表应包含在内,如下所示:
<link rel="stylesheet" type="text/css" media="screen" href="styles.css" />
如果外部样式表不起作用,请检查源文件路径。
答案 2 :(得分:1)
简单的解决方案是,将您的css放在单独的(.php)或任何其他服务器脚本文件中,并将其包含在您的pdf文件中。 例如。 你有pdf的pdf.blade.php文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
{{-- <link rel="icon" href="/favicon.ico"> --}}
<title>Starter Template for Bootstrap</title>
<style type="text/css">
@include('pdf.style')
</style>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Project name</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<div class="container">
<div class="starter-template">
<h1>Bootstrap starter template</h1>
<p class="lead">Use this document as a way to quickly start any new project.<br> All you get is this text and a mostly barebones HTML document.</p>
</div>
</div><!-- /.container -->
</body>
</html>
假设你有css文件style.css,那么下一步是复制你的css文件内容并将其粘贴到新的style.blade.php 你几乎完成了!!
现在将其包含在您的pdf文件中 例如
<style>
@include('style')
</style>
这就是简单的伎俩对我有用。