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

问题描述 投票:0回答:1

我使用ampps作为Windows 10 apache服务器,我的php版本是7.3。我从 LibreOffice 下载页面下载了它并安装在我的计算机上。然后我通过composer安装了这个库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();
?>

Fatal error: Uncaught Error: Call to a member function convertTo() on null in C:\Program Files\Ampps\www\converter\converter.php:29 Stack trace: #0 C:\Program Files\Ampps\www\converter\converter.php(43): OfficeConverterTest->testDocxToPdfConversion() #1 {main} thrown in C:\Program Files\Ampps\www\converter\converter.php on line 29

php libreoffice converters
1个回答
2
投票

运行测试时,我们应该将运行它们留给

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>';
© www.soinside.com 2019 - 2024. All rights reserved.