Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用DOMPDF的PDF页面标题_Php_Pdf Generation_Dompdf - Fatal编程技术网

在PHP中使用DOMPDF的PDF页面标题

在PHP中使用DOMPDF的PDF页面标题,php,pdf-generation,dompdf,Php,Pdf Generation,Dompdf,我正在使用DOMPDF创建一个PDF文件。我有一个大的内容提取在PDF中,我们需要在所有的页面标题。因此,任何人都可以告诉我如何在PDF中添加页眉和页脚,以便使用DOMPDF在所有页面中显示页眉。上有一个常见问题条目:有没有添加页眉和页脚或页码的方法 因此,您可以向HTML输入中添加以下“内联PHP”代码段(为页脚添加类似的调用): 最后,您必须在加载html后调用page\u text(请尝试一下)。在0.6.0代码中,您将能够使用html+CSS生成页眉和页脚。与使用内联PHP相比有一些限制

我正在使用DOMPDF创建一个PDF文件。我有一个大的内容提取在PDF中,我们需要在所有的页面标题。因此,任何人都可以告诉我如何在PDF中添加页眉和页脚,以便使用DOMPDF在所有页面中显示页眉。

上有一个常见问题条目:有没有添加页眉和页脚或页码的方法

因此,您可以向HTML输入中添加以下“内联PHP”代码段(为页脚添加类似的调用):


最后,您必须在加载html后调用
page\u text
(请尝试一下)。

在0.6.0代码中,您将能够使用html+CSS生成页眉和页脚。与使用内联PHP相比有一些限制(例如,还没有页面计数占位符),因此这是否可行取决于您的需要

以下代码将生成一个:


@第{页边距:180px 50px;}
#标题{位置:固定;左侧:0px;顶部:-180px;右侧:0px;高度:150px;背景色:橙色;文本对齐:中间;}
#页脚{位置:固定;左侧:0px;底部:-180px;右侧:0px;高度:150px;背景色:浅蓝色;}
#页脚。页码:{内容:计数器(页码,上罗马);}
Widgets Express
第页

第一页

第二页


如果需要访问某些缺少的功能,还可以使用这两种样式的组合。使用
page\u text
方法添加的PDF对象和文本呈现在HTML内容的顶部。

您需要此代码,希望对您有所帮助

问候

# 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);

谢谢vstm。。。我正试图在标题中打印一些html标记。我也试过TCPDF。。但我不能使用HTML标记,因为它只支持文本。在我的要求中,我必须创建一个报告,报告标题或列名应显示在所有页面中。我找不到任何东西可以在PDF中打印我的HTML标题。如果你知道什么,请帮助我。你的代码的第二部分是更好的一个,没有内联脚本php代码。但是“//addtheheader”部分必须在“$dompd->render();”之后才能工作。您应该在这个答案的第一部分启用“dompd_enable_PHP”,这是一个真正的安全风险。您不能将其用于外部网站或用户生成的html。当使用用户生成的内容时,在启用此选项之前,您应该100%确保所有内容都已正确转义。调试我发现$canvas=nullIn 0.7.0 Font_度量现在在dompd对象中可用
$Font=$dompd->getFontMetrics()->get_Font(“helvetica”,“bold”)@Pzanno dompdf当前无法以这种方式显示总页数。访问此信息的唯一方法是通过内联脚本。使用此脚本拯救了我的生命。。。只需要在每一页上都有一个徽标。重要的是要知道:将页眉和页脚放在代码的开头将在每一页上打印它们。将它们放在末尾将省略第一页的页眉和页脚。此外,页眉和页脚标记需要是正文的直接子项。资料来源:
// 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));
<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>
# 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&aacute;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);