Ошибка реализации PHP Poppler

Я сейчас использую эту библиотеку https://github.com/php-poppler/php-poppler в дополнение к Poppler для того, чтобы конвертировать PDF файлы в HTML, Я установил библиотеку через composer и, к сожалению, нет доступной документации, за исключением некоторых руководств по установке, но все еще не полностью.

Учитывая, что это Main API usage:

$file = new Poppler\Process\PdfFile(...);

// Get pdf info
print_r($file->getInfo('test.pdf'));

// Get text content of pdf
echo $file->toText('test.pdf');

// Transform to html
$file->toHtml('test.pdf', '/path/for/html');

Я не могу даже определить, какие параметры должны быть приведены в $file = new Poppler\Process\PdfFile(...);

Что я пробовал:

<?php
include 'vendor/autoload.php';
use Poppler\Processor\PdfFile;

use Poppler\Driver\Pdfinfo;
use Poppler\Driver\Pdftohtml;
use Poppler\Driver\Pdftotext;

$a = new Pdfinfo;
$b = new Pdftohtml;
$c = new Pdftotext;

$file = new PdfFile($a,$b,$c);

print_r($file->getInfo('test.pdf'));
echo $file->toText('test.pdf');

$file->toHtml('test.pdf', 'Results');

?>

Это дает ошибку:

Catchable fatal error: Argument 1 passed to Alchemy\BinaryDriver\AbstractBinary::__construct() must be an instance of Alchemy\BinaryDriver\ProcessBuilderFactoryInterface, none given

Вот PdfFile.php:

<?php

namespace Poppler\Processor;

use Poppler\Driver\Pdfinfo;
use Poppler\Driver\Pdftohtml;
use Poppler\Driver\Pdftotext;
use Poppler\Exception\FileNotFoundException;

class PdfFile
{

private $pdfinfo;
private $pdftotext;
private $pdftohtml;

public function __construct(Pdfinfo $pdfinfo, Pdftotext $pdftotext, Pdftohtml $pdftohtml)
{
$this->pdfinfo = $pdfinfo;
$this->pdftotext = $pdftotext;
$this->pdftohtml = $pdftohtml;
}

public function toText($inputfile, $toEncoding = 'UTF-8')
{
if (!file_exists($inputfile)) {
throw new FileNotFoundException("File $inputfile not found.");
}

$output = $this->pdftotext->command(array('-nopgbrk', $inputfile, '-'));
$fromEncoding = mb_detect_encoding($output);
if ($fromEncoding) {
return mb_convert_encoding($output, $toEncoding, $fromEncoding);
}

return mb_convert_encoding($output, $toEncoding);
}

public function toHtml($inputfile, $outputfile)
{
if (!file_exists($inputfile)) {
throw new FileNotFoundException("File $inputfile not found.");
}

$output = $this->pdftohtml->command(array($inputfile, $outputfile));

return $output;
}public function getInfo($inputfile)
{
if (!file_exists($inputfile)) {
throw new FileNotFoundException("File $inputfile not found.");
}

$args = array($inputfile);

$output = $this->pdfinfo->command($args);

$info = array();
foreach (explode(PHP_EOL, $output) as $line) {
if (strpos($line, ': ') === false) {
continue;
}
$parts = explode(': ', $line);
$key = trim($parts[0]);
$value = trim($parts[1]);
$info[$key] = $value;
}

return $info;
}
}

1

Решение

Я сейчас использую эту библиотеку https://github.com/php-poppler/php-poppler в дополнение к Poppler для того, чтобы конвертировать PDF файлы в HTML, Я установил библиотеку через composer и, к сожалению, нет доступной документации, за исключением некоторых руководств по установке, но все еще не полностью.

Учитывая, что это Main API usage:

$file = new Poppler\Process\PdfFile(...);

// Get pdf info
print_r($file->getInfo('test.pdf'));

// Get text content of pdf
echo $file->toText('test.pdf');

// Transform to html
$file->toHtml('test.pdf', '/path/for/html');

Я не могу даже определить, какие параметры должны быть приведены в $file = new Poppler\Process\PdfFile(...);

Что я пробовал:

<?php
include 'vendor/autoload.php';
use Poppler\Processor\PdfFile;

use Poppler\Driver\Pdfinfo;
use Poppler\Driver\Pdftohtml;
use Poppler\Driver\Pdftotext;

$a = new Pdfinfo;
$b = new Pdftohtml;
$c = new Pdftotext;

$file = new PdfFile($a,$b,$c);

print_r($file->getInfo('test.pdf'));
echo $file->toText('test.pdf');

$file->toHtml('test.pdf', 'Results');

?>

Это дает ошибку:

Catchable fatal error: Argument 1 passed to Alchemy\BinaryDriver\AbstractBinary::__construct() must be an instance of Alchemy\BinaryDriver\ProcessBuilderFactoryInterface, none given

Вот PdfFile.php:

<?php

namespace Poppler\Processor;

use Poppler\Driver\Pdfinfo;
use Poppler\Driver\Pdftohtml;
use Poppler\Driver\Pdftotext;
use Poppler\Exception\FileNotFoundException;

class PdfFile
{

private $pdfinfo;
private $pdftotext;
private $pdftohtml;

public function __construct(Pdfinfo $pdfinfo, Pdftotext $pdftotext, Pdftohtml $pdftohtml)
{
$this->pdfinfo = $pdfinfo;
$this->pdftotext = $pdftotext;
$this->pdftohtml = $pdftohtml;
}

public function toText($inputfile, $toEncoding = 'UTF-8')
{
if (!file_exists($inputfile)) {
throw new FileNotFoundException("File $inputfile not found.");
}

$output = $this->pdftotext->command(array('-nopgbrk', $inputfile, '-'));
$fromEncoding = mb_detect_encoding($output);
if ($fromEncoding) {
return mb_convert_encoding($output, $toEncoding, $fromEncoding);
}

return mb_convert_encoding($output, $toEncoding);
}

public function toHtml($inputfile, $outputfile)
{
if (!file_exists($inputfile)) {
throw new FileNotFoundException("File $inputfile not found.");
}

$output = $this->pdftohtml->command(array($inputfile, $outputfile));

return $output;
}public function getInfo($inputfile)
{
if (!file_exists($inputfile)) {
throw new FileNotFoundException("File $inputfile not found.");
}

$args = array($inputfile);

$output = $this->pdfinfo->command($args);

$info = array();
foreach (explode(PHP_EOL, $output) as $line) {
if (strpos($line, ': ') === false) {
continue;
}
$parts = explode(': ', $line);
$key = trim($parts[0]);
$value = trim($parts[1]);
$info[$key] = $value;
}

return $info;
}
}
1

Другие решения


active «data-shortcut =» A

самый старый «data-shortcut =» O
голосует «data-shortcut =» V
По вопросам рекламы [email protected]