当前位置: 首页 > 知识库问答 >
问题:

使用PHP LibreOffice和ncjoes/office转换器库转换文件

海嘉赐
2023-03-14

我使用ampps作为windows 10 apache服务器,我的php版本是7.3。我从LibreOffice下载页面下载了它,并将其安装在我的计算机上。然后我通过作曲家安装了这个库https://github.com/ncjoes/office-converter.我尝试在给出的例子中,但它不会转换并给出一个错误。如果你能帮助我,我将不胜感激。下面是我的代码示例和我遇到的错误:

<?php
if (!file_exists(__DIR__.'/vendor/autoload.php')) echo 'autoload.php mevcut değil!';
else require __DIR__.'/vendor/autoload.php';

use NcJoes\OfficeConverter\OfficeConverter;
use PHPUnit\Framework\TestCase;

class OfficeConverterTest extends TestCase
{
    /**
     * @var OfficeConverter $converter
     */
    private $converter;
    private $outDir;

    public function setUp()
    {
        parent::setUp();

        $DS = DIRECTORY_SEPARATOR;
        $file = __DIR__."{$DS}sources{$DS}test.docx";
        $this->outDir = __DIR__."{$DS}results";

        $this->converter = new OfficeConverter($file, $this->outDir);
    }

    public function testDocxToPdfConversion()
    {
        $output = $this->converter->convertTo('result.pdf');

        $this->assertFileExists($output);
    }

    public function testDocxToHtmlConversion()
    {
        $output = $this->converter->convertTo('result.html');

        $this->assertFileExists($output);
    }
}

$donustur = new OfficeConverterTest();
$donustur->testDocxToPdfConversion();
?>

致命错误:未捕获错误:在C:\Program Files\Ampps\www\converter\converter中调用空值的成员函数convertTo()。php:29堆栈跟踪:#0 C:\Program Files\Ampps\www\converter\converter。php(43):OfficeConverterTest-


共有1个答案

欧阳安阳
2023-03-14

在运行测试时,我们应该将运行测试的任务留给phpunit,但您正在尝试手动调用(在代码的最后两行中)。

但如果您坚持手动调用,请更改:

$donustur = new OfficeConverterTest();
$donustur->testDocxToPdfConversion();

进入:

$donustur = new OfficeConverterTest();
$donustur->setUp();
$donustur->testDocxToPdfConversion();

这样,您就可以调用setUp(),而phpunit通常会自动调用它。

另请参阅:如何运行所有PHPUnit测试?
如何使用phpUnit运行单个测试方法?

如果要在网页上使用此逻辑,它应该如下所示:

<?php
if (!file_exists(__DIR__.'/vendor/autoload.php')) echo 'autoload.php mevcut değil!';
else require __DIR__.'/vendor/autoload.php';

use NcJoes\OfficeConverter\OfficeConverter;

echo 'Converting...<br>';

$input = __DIR__ . '/test.docx';
$converter = new OfficeConverter($input, __DIR__.'/results');
$output = $converter->convertTo('result.pdf');

echo 'Saved at:' . $output . '<br>';
 类似资料:
  • 在我的Oracle数据库中,我有存储为VARCHAR的数量值。从数据库中检索记录时,我希望将它们映射到一个POJO,其中金额值表示为double。不幸的是,我不能使用强制类型,因为在数据库中,所有内容都存储为VARCHAR,并且没有模式将列标识为包含金额值的列。 我正在查看jOOQ转换器,这似乎是我想要的。因此,我为此创建了一个jOOQ转换器: 然而,每当我想使用将数据库记录映射到我的POJO时,

  • 在我的代码中,我想要 对象“膳食创建”中字段“日期时间”上的字段错误:拒绝值[2020-05-11T11:08];代码[TypeMismatch.MealScreate.DateTime,TypeMismatch.DateTime,TypeMismatch.java.time.LocalDateTime,TypeMismatch];参数[org.springframework.context.su

  • 我试着用pandoc在html或epub中转换我的tex文件。它不是一个复杂的带数学格式的乳胶文件。它有点像一本书。 但是我有一个问题。当我用转换pdf中的文件时,所有文件都可以。但是当我使用 或 pandocbook.texbook.epub 就好像没有汇编一样<代码> 事实上,这就像我做了一个简单的复制和粘贴,没有命令。

  • 我们正在研究AngularJS应用程序。要求是在HTML格式的新选项卡中显示文档。因此,我们实现了一个转换器,它基本上将office文档(doc、docx和odt)转换为HTML查看器。我们使用Apache POI实现了转换器。我们编写了三个converter将doc、docx和odt转换成HTML。 问题 文本转换工作正常,但当文档包含任何图像时,问题就会出现。所以转换器通过在我的本地系统上下载

  • XML输入文件: XML输入文件转换为XML输出文件。将XML输入文件的firstName、middleName和lastName标签合并为XML Ouput文件的name标签,将XML输入文件的address1、address2、city、state和pincode标签合并为XML Ouput文件的address标签。 我几乎转换了代码,但我在这里与empId作斗争。我已经在XSLT文件中手动输

  • 可以使用gettext翻译数据库表的内容吗? 例如,我有一些永远不会更改内容的数据库表,例如连接国家id(“fr”、“de”、…)的表有国家名称(“法国”、“德国”和……)国家名称用英语书写的地方。我可以添加额外的表列来提供不同语言的国家名称翻译,但我想知道,是否可以使用gettext来翻译国家名称。 如果有必要,我会使用php并在代码中用。