gpt4 book ai didi

javascript - PDF JavaScript 不再在 Edge 中运行

转载 作者:行者123 更新时间:2023-12-03 03:41:29 24 4
gpt4 key购买 nike

我在通过浏览器查看 FPDF/PHP 生成的 PDF 时运行 JavaScript 时遇到一些问题。该脚本应该显示打印对话框或消息框。此功能已运行多年,但似乎因 Edge/Windows 的重新更新而被破坏。经过调查,似乎行为因浏览器/查看器而异。

关于完全更新的 Windows 10 的调查结果:

  • Edge:PDF 在 Edge 自己的查看器中打开,并且打印对话框出现
  • Firefox:PDF 在 Firefox 自己的查看器中打开,并出现打印对话框
  • 资源管理器:PDF 在默认 PDF 查看器中打开,并显示打印对话框

与消息框​​调用相同的故事。

我正在按照 FPDF JavaScript support 中指定的方式扩展 FPDF示例。

<?

require('fpdf.php');

class PDF_JavaScript extends FPDF {

// My code start
function OpenPrintDialog()
{
$this->IncludeJS("print(true);");
}

function ShowMessageMessage($text)
{
$this->IncludeJS("app.alert('$text', 3);");
}
// My code end

protected $javascript;
protected $n_js;

function IncludeJS($script, $isUTF8=false) {
if(!$isUTF8)
$script=utf8_encode($script);
$this->javascript=$script;
}

function _putjavascript() {
$this->_newobj();
$this->n_js=$this->n;
$this->_put('<<');
$this->_put('/Names [(EmbeddedJS) '.($this->n+1).' 0 R]');
$this->_put('>>');
$this->_put('endobj');
$this->_newobj();
$this->_put('<<');
$this->_put('/S /JavaScript');
$this->_put('/JS '.$this->_textstring($this->javascript));
$this->_put('>>');
$this->_put('endobj');
}

function _putresources() {
parent::_putresources();
if (!empty($this->javascript)) {
$this->_putjavascript();
}
}

function _putcatalog() {
parent::_putcatalog();
if (!empty($this->javascript)) {
$this->_put('/Names <</JavaScript '.($this->n_js).' 0 R>>');
}
}
}

$pdf = new PDF_JavaScript();
$pdf->AddPage();
$pdf->SetFont('Arial', '', 20);
$pdf->Text(90, 50, 'Print me!');

$pdf->OpenPrintDialog();
// or
//$pdf->ShowMessageMessage('Message box me!');

$pdf->Output();

?>

是否根本不可能指望 PDF JavaScript 功能在不同的浏览器/查看器中被允许?

最佳答案

Is it simply not possible to count on PDF JavaScript functionality being allowed in different browsers/viewers?

这是不可能的。您尝试运行的 JavaScript 仅适用于 Adob​​e Acrobat 和 Reader 以及我所知道的其他一些桌面 PDF 查看器和一种移动 PDF 查看器。该代码在 Edge 中不起作用,因为 Edge 有自己的内置 PDF 查看器,Explorer 将使用 Adob​​e Reader 或 Acrobat、Foxit、Nuance、Nitro 或其他操作系统级别的 Reader 来显示 PDF,这就是您收到该对话框的原因.

简而言之,您不能指望正确的查看器/浏览器/操作系统组合来运行 PDF 中的任何 JavaScript。

关于javascript - PDF JavaScript 不再在 Edge 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45600826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com