【发布时间】:2023-10-09 09:48:01
【问题描述】:
我正在运行一个仅限 Web 的服务器(因此没有服务器访问权限,也没有 Composer 或 LibreOffice 之类的东西),我想将 DOCX 模板转换为 PDF。我已经使用 PHPWord 成功处理了我的模板(使用 php-download.com 下载,因为我不能使用 composer),那里一切正常,但是当我尝试使用 DomPDF(也通过 phpdownload 下载)将我的 docx 文件转换为 PDF文件,PHP 抛出“找不到类 'Dompdf\Dompdf'”...
我创建了一个单独的文件来转换一个已知的 docx 文件,只是为了排除任何环境问题
这是我的代码:
require_once("includes/PHPWord/vendor/autoload.php");
$inputfile = "files/temp/offerte_Hankie-Pankie.docx";
$path = realpath(realpath(__DIR__) . '/includes/dompdf');
echo "realpath: " . $path;
\PhpOffice\PhpWord\Settings::setPdfRendererPath($path);
\PhpOffice\PhpWord\Settings::setPdfRendererName(\PhpOffice\PhpWord\Settings::PDF_RENDERER_DOMPDF);
//Load temp file
$phpWord = \PhpOffice\PhpWord\IOFactory::load($inputfile);
//Save it
$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord , 'PDF');
$xmlWriter->save('result.pdf');
使用 echo 我确认文件夹设置正确:“/home/myusername/domains/mydomain.nl/public_html/projects/pdftemplate/includes/dompdf”
所以我尝试解析子文件夹“src”或“lib”但没有成功,我尝试解析实际的自动加载器文件“autoload.inc.php”也没有成功。我尝试了上述所有路径,无论是否以“/”结尾(只是为了确定),但仍然找不到类......即使我使用的是发现(可能)在互联网上工作的代码的精确副本。
我尝试在 PHPWord 文档中找到它,但没有给我任何解决方案。我也尝试排除 PHPWord 并仅使用 DomPDF,但由于 DomPDF 仅接受 html 作为输入,而且我不知道如何(并且不想再花一个小时尝试)将 docx 转换为 HTML,这也是一个死胡同.
仅供参考,这是我的文件结构:
- 工作目录
- CodeIsInThisFile.php
- 包括
- dompdf
- 库
- 源
- Autoloader.php
- autoloader.inc.php
- PHPWord
- 供应商
- 自动加载.php
所以要么我因为手动下载而弄乱了我的文件结构(这对我来说似乎最有可能),或者我的代码是错误的(也有可能)......
【问题讨论】:
-
包含完整的错误消息可能会有所帮助。
标签: php pdf docx dompdf phpword