2016-08-17 89 views
1

我正在使用dompdf 0.7.0,并尝试在渲染后在我的PDF上写下PHP中的文本。我需要特定页面上的文本,并从Brian的答复中找到以下内容 DomPDF {PAGE_NUM} not on first pagedompdf - 单个页面上的文本/ page_script不起作用

函数page_script听起来像正确的答案。 我可以检查循环当前是在第3页或其他什么。

我必须启用此功能的任何选项吗?

例子:

$dompdf = new Dompdf($options); 
    $dompdf->set_option('default_font', 'open sans'); 
    $dompdf->set_option('fontHeightRatio', 1); 
    $dompdf->setPaper('A4') 


    $dompdf->set_option('enable_html5_parser', true); 
    $dompdf->set_option('enable_php', true); 

    $dompdf->loadHtml($html); 
    $dompdf->render(); 

    $canvas = $dompdf->get_canvas(); 
    $canvas->page_script(' 
    if ($PAGE_NUM > 1) { 
     $current_page = $PAGE_NUM-1; 
     $total_pages = $PAGE_COUNT-1; 
     $canvas->text(0, 0, "$current_page/$total_pages", "open sans condensed", 10, array(0,0,0)); 
    } 
    '); 

它仍然是我的第一页上显示。

+0

看起来不错,但是你可以添加更多与dompdf相关的代码吗?在包含v0.7.0之前,您必须呈现PDF,然后才能应用页面脚本。 – BrianS

+0

hello布赖恩:)我更新了我的帖子与dompdf启动。 – kristof

+0

每页上“$ PAGE_NUM”的值是多少? – BrianS

回答

1

$canvas在页面脚本中不可用,因为它超出了范围。画布对象可以在您的页面脚本中被引用为$pdf

请尝试以下page_script调用来代替:

$canvas->page_script(' 
    if ($PAGE_NUM > 1) { 
    $current_page = $PAGE_NUM-1; 
    $total_pages = $PAGE_COUNT-1; 
    $font = $fontMetrics->getFont("open sans condensed", "normal"); // or bold, italic, or bold_italic 
    $pdf->text(0, 0, "$current_page/$total_pages", $font, 10, array(0,0,0)); 
    } 
}; 

有可以从网页中的脚本中的几个变量或嵌入的脚本:

  • $PAGE_NUM:当前页码
  • $PAGE_COUNT:总数页
  • $pdf:画布对象
  • $fontMetrics:FontMetrics类的一个实例

如果您使用页面文本您可以访问下面的模板变量:

  • {PAGE_NUM}:当前页码
  • {PAGE_COUNT}:总页数

注意:默认情况下禁用对解析嵌入式脚本或页面脚本的支持。使用以下命令启用它:$dompdf->set_option("isPhpEnabled", true);。这必须在致电$dompdf->render();之前完成。

+0

你知道如何设计'PAGE'变量,也就是说。粗体,因为它们被馈送到'$ pdf-> text()'? – 2016-09-13 00:20:10

+0

您必须使用'selectFont()'方法选择适当的字体(我刚刚意识到我忽略了在该代码中进行更正,回答编辑)。 – BrianS

+0

我想我必须创建'$ PDF - >文字的3层左右的实例()'只是这样我就可以做到这一点:“'{} PAGE_NUM的 {} PAGE_COUNT'的页” :-( 谢谢! – 2016-09-13 06:03:46