2015-04-23 1 views
2

Я пробовал весь день, чтобы заставить это работать. Сейчас я могу сохранить документ как файл .docx, но мне захотелось сохранить документ в формате PDF, который я пытался использовать с DOMPDF и TCPDF, но я продолжаю получать сообщение об ошибке «Невозможно загрузить библиотеку PDF». Я подтвердил, что путь правильный. , Я что-то упускаю? спасибо за вашу помощьPHPWord to PDF не удалось загрузить библиотеку

$rendererName = \PhpOffice\PhpWord\Settings::PDF_RENDERER_TCPDF; 
$rendererLibrary = 'tcpdf.php'; 
$rendererLibraryPath = dirname(__FILE__) .'/plugins/tcpdf/' . $rendererLibrary; 

\PhpOffice\PhpWord\Settings::setPdfRenderer($rendererName,$rendererLibraryPath); 

$document->saveAs('temp.docx'); // Save to temp file 
$test = \PhpOffice\PhpWord\IOFactory::load('temp.docx'); // Read the temp file 
$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($test, 'PDF'); 
$xmlWriter->save('result.pdf'); // Save to PDF 
unlink('temp.docx'); // Delete the temp file 

Вот код, который бросает ошибку

public function __construct(PhpWord $phpWord) 
{ 
    parent::__construct($phpWord); 
    $includeFile = Settings::getPdfRendererPath() . '/' . $this->includeFile; 
    if (file_exists($includeFile)) { 
     /** @noinspection PhpIncludeInspection Dynamic includes */ 
     require_once $includeFile; 
    } else { 
     // @codeCoverageIgnoreStart 
     // Can't find any test case. Uncomment when found. 
     throw new Exception('Unable to load PDF Rendering library'); 
     // @codeCoverageIgnoreEnd 
    } 
} 

Здесь полная ошибка

Фатальная ошибка: Uncaught исключение «PhpOffice \ PhpWord \ Exception \ Exception 'с сообщением «Невозможно загрузить библиотеку рендеринга PDF» в .../PHPWord/Writer/PDF/AbstractRenderer.php: 92 Трассировка стека: # 0 .../PHPWord/Writer/PDF.php (61): PhpOffice \ PhpWord \ Writer \ PDF \ AbstractRenderer -> __ construct (Object (PhpOffice \ PhpWord \ PhpWord)) # 1 .../PHPW ord/IOFactory.php (34): PhpOffice \ PhpWord \ Writer \ PDF -> __ construct (Object (PhpOffice \ PhpWord \ PhpWord)) # 2 .../download_report.php (578): PhpOffice \ PhpWord \ IOFactory :: createWriter (Object (PhpOffice \ PhpWord \ PhpWord), 'PDF') # 3 {main} брошен в .../PHPWord/Writer/PDF/AbstractRenderer.php в строке 92

+0

В какой строке вы видите ошибку? Это показывает? Вы проверили разрешения на папку tcpdf? – dgig

+0

строка ошибки AbstractRenderer.php: 92 и PDF.php (61) Я не проверял разрешения, какими они должны быть? – joanb

+0

, вероятно, 755 - это хороший способ начать работу с разрешениями. Хотя вы могли бы, * AS A TEST * установить их на 777, чтобы убедиться, что это проблема, и переключите ее обратно. – dgig

ответ

2

Зная, что, я предполагаю, ответ меняется:

$includeFile = Settings::getPdfRendererPath() . '/' . $this->includeFile; 

в

$includeFile = Settings::getPdfRendererPath(); 
0

При печати ошибки в журнал, я понимаю, что пытается загрузить dompdf_config.inc.php от недопустимого LOC ция. Смотри ниже.

C: \ WAMP \ WWW \ cccake \ приложение \ Vendor \ DOMPDF \ dompdf.php/dompdf_config.inc.php \ п

Вместо того, чтобы изменять файлы классов из PHPExcel/PHPWord, это разумно изменить конфигурации в вашем представлении. Игнорирование $ rendererLibrary полностью в $ rendererLibraryPath исправило мою проблему. Я думаю, что PHPExcel/PHPExcel знает, как выбрать файл dompdf.php (tcpdf.php) в вашем случае. Попробуйте ниже код, сообщите нам, если он не работает.

$ rendererLibrary = 'tcpdf.php'; $ rendererLibraryPath = dirname (FILE). '/ Plugins/tcpdf';