如何在tcpdf

时间:2017-02-12 13:24:19

标签: php tcpdf

当我使用TCPDF生成并保存带有链接的文档时。在关闭pdf阅读器之前,它始终显示另存为对话框。

"Do you want to save the changes to file.pdf before closing?"

当我将鼠标悬停在链接上时,Chrome浏览器中还有一个黄色的便条框...如下图所示。

我的问题代码是这样的。

$pdf->writeHTML('<a href="/wp-admin/admin.php?page=system_view_data&id=1">link</a>');

但是,如果我的html中的链接为空,则关闭pdf时没有问题,同时链接中也没有黄色框。例如,以下代码工作正常。

$pdf->writeHTML('<a href="">link</a>');

以下是重现问题的完整示例。

require_once __DIR__.'../../external_classes/TCPDF/tcpdf.php';
    $pdf = new \TCPDF();
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor('ABC');
    $pdf->SetTitle('ABC');
    $pdf->SetSubject('ABC');

    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, "ABC", "ABC");
    $pdf->setPrintFooter(false);
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
    $pdf->SetMargins(PDF_MARGIN_LEFT, 10, PDF_MARGIN_RIGHT);
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
    $pdf->SetFont('helvetica', '', 10);
    $pdf->AddPage();
    $pdf->writeHTML('<a href="/wp-admin/admin.php?page=system_view_data&id=1">link</a>');
    ob_clean();
    $pdf->Output('example.pdf', 'D');

以上示例将生成如下图所示的输出。哪个都有问题,我已经在tcpdf版本5.9.x和6.2.x上进行了测试。

2 个答案:

答案 0 :(得分:1)

好的,找到了两个问题的解释。

<强> 1。第一个问题:“另存为对话框”

的问题

由于某种原因,tcpdf库在pdf的末尾追加我的网站html。我通过使用文本编辑器以纯文本查看我的pdf来发现这一点。

在output()之后立即使用存在的函数来修复它。

$pdf->Output('example.pdf', 'D');
exit();

<强> 2。第二个问题:chrome中的黄色链接框问题

这是目前Chrome中未解决的活动问题。例如,在mPdf论坛上查看此link

答案 1 :(得分:1)

您可以通过删除注释来解决第二个问题。

  • 创建自己的类MyTCPDF extends \ TCPDF。
  • 从tcpdf.php复制到创建的类“protected function _putannotsobjs()”。你会覆盖它。
  • 以方法形式更改此字符串
    `$annots .= ' /Contents ' . $this->_textstring($pl['txt'], $annot_obj_id);`
    在这里输入代码 到
    `$annots .= ' /Contents ()';`
  • 使用您的班级生成pdf文件。
  • 您可以通过常量或其他方式将此方法中的任何逻辑设置为禁用注释。