如何摆脱 tcpdf 中的另存为对话框和黄色框
How to rid of Save As dialog and yellow box in tcpdf
当我使用 TCPDF 生成并保存带有 link 的文档时。在关闭 pdf reader.
之前,它总是显示另存为对话框
"Do you want to save the changes to file.pdf before closing?"
当我将鼠标悬停在 link... 上时,chrome 浏览器中还有一个黄色的注释框,如下图所示。
我的问题代码是这样的。
$pdf->writeHTML('<a href="/wp-admin/admin.php?page=system_view_data&id=1">link</a>');
但是,如果我的 links 在我的 html 中是空的,那么关闭 pdf 时就没有问题,而且 links 中也不再有黄色框。例如,以下代码工作正常。
$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.
上进行了测试
好的,找到了对这两个问题的一些解释。
1.第一个问题:Save as Dialog
的问题
出于某种原因,tcpdf 库在 pdf 的末尾附加了我的网站 html。我通过使用文本编辑器以纯文本形式查看我的 pdf 发现了这一点。
在 output() 之后立即使用现有函数将修复它。
$pdf->Output('example.pdf', 'D');
exit();
2。第二个问题:chrome
中黄色link框的问题
这是 chrome 中目前未解决的活跃问题。例如在 mPdf 论坛上查看此 link。
您可以通过完全删除注释来解决第二个问题。
- 创建您自己的 class MyTCPDF 扩展了 \TCPDF。
- 从 tcpdf.php 复制到创建的 class "protected function _putannotsobjs()"。您将覆盖它。
- 以方法形式更改此字符串
`$annots .= ' /Contents ' . $this->_textstring($pl['txt'], $annot_obj_id);`
在此处输入代码
至
`$annots .= ' /Contents ()';`
- 使用您的 class 生成 pdf 文件。
- 您可以在此方法中放置任何逻辑,通过常量或其他方式禁用注释。
当我使用 TCPDF 生成并保存带有 link 的文档时。在关闭 pdf reader.
之前,它总是显示另存为对话框"Do you want to save the changes to file.pdf before closing?"
当我将鼠标悬停在 link... 上时,chrome 浏览器中还有一个黄色的注释框,如下图所示。
我的问题代码是这样的。
$pdf->writeHTML('<a href="/wp-admin/admin.php?page=system_view_data&id=1">link</a>');
但是,如果我的 links 在我的 html 中是空的,那么关闭 pdf 时就没有问题,而且 links 中也不再有黄色框。例如,以下代码工作正常。
$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.
上进行了测试好的,找到了对这两个问题的一些解释。
1.第一个问题:Save as Dialog
的问题出于某种原因,tcpdf 库在 pdf 的末尾附加了我的网站 html。我通过使用文本编辑器以纯文本形式查看我的 pdf 发现了这一点。
在 output() 之后立即使用现有函数将修复它。
$pdf->Output('example.pdf', 'D');
exit();
2。第二个问题:chrome
中黄色link框的问题这是 chrome 中目前未解决的活跃问题。例如在 mPdf 论坛上查看此 link。
您可以通过完全删除注释来解决第二个问题。
- 创建您自己的 class MyTCPDF 扩展了 \TCPDF。
- 从 tcpdf.php 复制到创建的 class "protected function _putannotsobjs()"。您将覆盖它。
- 以方法形式更改此字符串
`$annots .= ' /Contents ' . $this->_textstring($pl['txt'], $annot_obj_id);`
在此处输入代码 至
`$annots .= ' /Contents ()';`
- 使用您的 class 生成 pdf 文件。
- 您可以在此方法中放置任何逻辑,通过常量或其他方式禁用注释。