【问题标题】:Unoconv not creating pdf file in php scriptUnoconv 不在 php 脚本中创建 pdf 文件
【发布时间】:2017-03-04 12:10:40
【问题描述】:

当我在我的 mac xampp 中运行这个 phpscript 时,它返回成功,但没有生成 pdf 文件。但是当我从 mac 终端运行时,它能够从 docx 文件创建 pdf 文件。

 <?php
    $source_file = 'c++ documentation.docx';
    $cmd = "unoconv/0.7/bin/unoconv";
    $command = sprintf("/Applications/XAMPP/xamppfiles/htdocs/phpdocx/unoconv/0.7/bin/unoconv -h -v -f pdf -o /phpdocx/docimages/testing.pdf %s 2>&1",
  escapeshellarg($source_file));
    echo shell_exec($command);

    echo "yoyo";

    if(shell_exec($command)){
        echo "successful";
    }else{
        echo "failed";
    }
?>

这是我编辑的代码,上面写着 sprintf(): Too little argument!

【问题讨论】:

  • 所以脚本在你从 CLI 运行时成功,在你通过 Web 服务器请求时失败,对吧?
  • 是的,它在终端 CLI 中成功,但在 xampp 网络服务器中失败
  • 我会在某处打印命令,然后尝试从 CLI 运行它
  • 只是为了确保该命令确实有效。如果它有效,那么您可能会在网页上看到缓存的变体。
  • 我可以在命令中运行,但我需要在 php 脚本上工作,但我不知道为什么它不能工作我已经按照教程相同的步骤,但仍然不能工作并且没有生成 pdf 但是它返回成功,这是最奇怪的部分

标签: php unoconv


【解决方案1】:

您需要对 shell 参数进行转义,否则 shell 可能会解释其特殊字符:

$source_file = 'c++ documentation.docx';
$command = sprintf("unoconv/0.7/bin/unoconv -h -v -f pdf -o /phpdocx/docimages/testing.pdf %s 2>&1",
  escapeshellarg($source_file));

提供您的unoconv/0.7/bin/unoconv 可执行文件的完整(绝对)路径,因为您的$PATH 环境变量似乎不可用:

$command = sprintf("/path/to/unoconv/0.7/bin/unoconv -h -v -f pdf -o /phpdocx/docimages/testing.pdf %s 2>&1",
  escapeshellarg($source_file));

或者,在调用 shell 之前,将 unoconv/0.7/bin/ 目录的绝对路径包含到 $PATH 环境变量中。例如,请参阅this 帖子。

显然,$source_file 应该在当前目录中。否则,该命令将无法访问它。

【讨论】:

  • 呃,我该怎么做?是不是叫终端放进去?
  • /Applications/XAMPP/xamppfiles/htdocs/phpdocx/unoconv/0.7/bin/unoconv 你的意思是这样的真实路径?
  • 它给我这个用​​法仍然是一样的:unoconv [options] file [file2 ..] 转换和转换为 LibreOffice unoconv 选项支持的任何格式:-c,--connection=string 使用自定义连接字符串 -d、--doctype=type 指定文档类型(文档、图形、演示文稿、电子表格) -e、--export=name=value 设置导出过滤器选项,例如。 -e PageRange=1-2 -f, --format=format 指定输出格式 -F, --field=name=value 用值替换用户定义的文本字段,例如。 -F Client_Name="Oracle" -i, --import=string 设置导入过滤选项字符串,例如。 -i utf8 -l 但它说成功
猜你喜欢
  • 2022-12-23
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
  • 2017-11-03
  • 2012-06-18
  • 1970-01-01
相关资源
最近更新 更多