我正在使用 DOMPDF 创建一个 PDF 文件。我有大量内容要提取为 PDF,我们需要在所有页面中添加一些标题。那么任何人都可以告诉我如何在 PDF 中添加页眉和页脚,以便页眉将显示在使用 DOMPDF 的所有页面中。
问问题
63877 次
4 回答
71
在 0.6.0 代码中,您将能够使用 HTML+CSS 生成页眉和页脚。与使用内联 PHP 相比存在一些限制(例如,还没有 PAGE_COUNT 占位符),因此这是否可行取决于您的需要。
以下代码将生成一个包含页眉和页脚的两页文档:
<html>
<head>
<style>
@page { margin: 180px 50px; }
#header { position: fixed; left: 0px; top: -180px; right: 0px; height: 150px; background-color: orange; text-align: center; }
#footer { position: fixed; left: 0px; bottom: -180px; right: 0px; height: 150px; background-color: lightblue; }
#footer .page:after { content: counter(page, upper-roman); }
</style>
<body>
<div id="header">
<h1>Widgets Express</h1>
</div>
<div id="footer">
<p class="page">Page </p>
</div>
<div id="content">
<p>the first page</p>
<p style="page-break-before: always;">the second page</p>
</div>
</body>
</html>
如果您需要访问某些缺少的功能,也可以使用这两种样式的组合。使用该方法添加的 PDF 对象和文本page_text
呈现在 HTML 内容之上。
于 2011-09-20T17:56:48.890 回答
22
DOMPDF wiki上有一个 FAQ 条目:有没有办法添加页眉和页脚或页码?.
因此,您可以将以下“内联 PHP”-snippet 添加到您的 HTML 输入中(page_text
为您的页脚添加类似的 -call):
<script type="text/php">
if ( isset($pdf) ) {
$font = Font_Metrics::get_font("helvetica", "bold");
$pdf->page_text(72, 18, "Header: {PAGE_NUM} of {PAGE_COUNT}",
$font, 6, array(0,0,0));
}
</script>
如果您想在调用方(直接在 PHP 代码中)实现这一点,则必须调用 DOMPDFS 的get_canvas()
-method,它返回底层 PDF-Renderer,它允许您调用page_text
上述示例中的方法。让我告诉你我的意思:
// your dompdf setup
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
// add the header
$canvas = $dompdf->get_canvas();
$font = Font_Metrics::get_font("helvetica", "bold");
// the same call as in my previous example
$canvas->page_text(72, 18, "Header: {PAGE_NUM} of {PAGE_COUNT}",
$font, 6, array(0,0,0));
最终你必须打电话page_text
(load_html
试一试)。
于 2011-09-20T12:28:40.303 回答
3
定义如下,文档的页眉、页脚和内容:
<html>
<head>
<style>
@page {
margin: 100px 25px;
}
header {
position: fixed;
top: -60px;
height: 50px;
background-color: #752727;
color: white;
text-align: center;
line-height: 35px;
}
footer {
position: fixed;
bottom: -60px;
height: 50px;
background-color: #752727;
color: white;
text-align: center;
line-height: 35px;
}
</style>
</head>
<body>
<header>
Header
</header>
<footer>
Footer
</footer>
<main>
<!-- Your main content -->
</main>
</body>
</html>
于 2021-06-25T13:59:54.600 回答
2
您需要此代码,希望对您有所帮助
问候...
# Instanciamos un objeto de la clase DOMPDF.
$dompdf = new DOMPDF();
# Definimos el tamaño y orientación del papel que queremos.
# O por defecto cogerá el que está en el fichero de configuración.
$dompdf->set_paper("Letter", "portrait");
# Cargamos el contenido HTML.
$dompdf->load_html(utf8_decode($html));
# Renderizamos el documento PDF.
$dompdf->render();
#Esto es lo que imprime en el PDF el numero de paginas
$canvas = $dompdf->get_canvas();
$footer = $canvas->open_object();
$w = $canvas->get_width();
$h = $canvas->get_height();
$canvas->page_text($w-60,$h-28,"Página {PAGE_NUM} de {PAGE_COUNT}", Font_Metrics::get_font('helvetica'),6);
$canvas->page_text($w-590,$h-28,"El pie de página del lado izquiero, Guadalajara, Jalisco C.P. XXXXX Tel. XX (XX) XXXX XXXX", Font_Metrics::get_font('helvetica'),6);
$canvas->close_object();
$canvas->add_object($footer,"all");
# Enviamos el fichero PDF al navegador.
//$dompdf->stream('FicheroEjemplo.pdf');
# Para grabar en fichero en ruta especifica
$output = $dompdf->output();
file_put_contents('ejemplo.pdf',$output);
#Liberamos
unset($dompdf);
于 2018-07-11T13:11:29.487 回答