0

我无法在 php 中执行 pdftk。与文档中一样,它只是在 saveas 中提到如下。

use mikehaertl\pdftk\Pdf;

$pdf = new Pdf('/path/my.pdf');

$pdf->allow('AllFeatures')      // Change permissions
    ->compress($value)          // Compress/Uncompress
    ->saveAs('new.pdf');

但是我的代码没有给出任何输出。我尝试调试

// Check for errors
if (!$pdf->saveAs('new.pdf')) {
    $error = $pdf->getError();
}

没有消息。后来发现,Pdftk 没有被执行

public function saveAs($name)
{
    if (!$this->getCommand()->getExecuted() && !$this->execute()) {
     echo 'test'; // it is printing   
     return false;
    }
}

这是什么意思 ?我是从作曲家安装的。在阅读 github 问题时,开发人员的回复可能是我的问题。是 你需要设置你的pdftk命令的路径,见https://github.com/mikehaertl/php-pdftk#execution

我不清楚如何设置路径,它没有在文档中突出显示。这里只提到

该类使用 php-shellcommand 来执行 pdftk。您可以将其 Command 类的 $options 作为第二个参数传递给构造函数:例如。

$pdf = new Pdf('/path/my.pdf', [
    'command' => '/some/other/path/to/pdftk',
    // or on most Windows systems:
    // 'command' => 'C:\Program Files (x86)\PDFtk\bin\pdftk.exe',
    'useExec' => true,  // May help on Windows systems if execution fails
]);

我正在使用 xampp。关于 pdftk,我在项目中有一个由 composer 创建的目录。phpand这条路径是什么?这个项目可以在linux或window server中移动吗?我需要为此安装任何第三方软件吗?

4

1 回答 1

2

您需要从这里安装 pdftk - pdftk 官方。如果您在 Windows 上安装,请确保您的系统环境变量设置为执行 pdftk,您可以通过简单地在命令提示符下运行来测试它

pdftk--版本

如果这在您的命令提示符下有效,则意味着您的路径正确。其次,如果您无法在 Windows 中设置环境变量,您可以直接pdftk.exe在代码中传递来自程序文件的路径,如下所示:

$pdf = new Pdf('/path/my.pdf', [
    'command' => 'C:\Program Files (x86)\PDFtk\bin\pdftk.exe',
    // or on most Windows systems:
    // 'command' => 'C:\Program Files (x86)\PDFtk\bin\pdftk.exe',
    'useExec' => true,  // May help on Windows systems if execution fails
]);

您还需要弄清楚有关权限的任何问题,确保 php 有权在您的窗口中执行脚本并且它可以写入文件系统。

于 2020-08-16T22:12:30.857 回答