Faire DomPDF que mon pdf writer pour phpWord
J'ai utilisé laravel pour mon application, et le dompdf est trouvé dans:
../vendor/dompdf/dompdf
Ce que je voulais obtenir est de convertir mon .fichier docx (Microsoft Word).fichier pdf. Le fichier docx a été généré par phpWord par le chargement d'un fichier de modèle et de remplacer les valeurs.
Voici l'extrait:
//Get the absolute path of the template file
$wordTemplatePath = $this->getDocumentTemplatePath('resignation.docx');
//Load the template file
$document = $this->phpWord->loadTemplate($wordTemplatePath);
//This will be filled with data
$wordData = []
.... Process to fill the data .....
//Replace value to actual word document
$this->setTemplateValues($wordData, $document);
//Generate its filename
$file = $this->generateFileName('Retirement-Certificate.docx', $id);
//Fetch the absolute path to save the document
$filepath = $this->getSavePath($file);
//Save the word document
$document->saveAs( $filepath );
Après, une .docx fichier sera généré. J'ai voulu faire une version PDF de. donc, je recherche et trouve cet extrait de code, et ajouté dans mon code:
\PhpOffice\PhpWord\Settings::setPdfRendererPath('../vendor/dompdf/dompdf');
\PhpOffice\PhpWord\Settings::setPdfRendererName('DOMPDF');
//Load temp file
$phpWord = \PhpOffice\PhpWord\IOFactory::load($filepath);
//Save it
$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord , 'PDF');
$xmlWriter->save('result.pdf');
Mais j'ai eu cette erreur:
{"error":
{"type":"PhpOffice\\PhpWord\\Exception\\Exception","message":"PDF rendering library or library path has not been defined.",
"file":"C:\\xampp\\htdocs\\vagrant\\vendor\\phpoffice\\phpword\\src\\PhpWord\\Writer\\PDF.php",
"line":49}}
Comment pourrais-je faire DomPDF que mon pdf writer pour PHPWord? Je ne trouve pas d'autres options, donc je demande ici. J'espère que vous pourrez m'aider. Merci!
Avez-vous essayé un chemin d'accès absolu à la dompdf bibliothèque?
OriginalL'auteur Bajongskie | 2014-08-29
Vous devez vous connecter pour publier un commentaire.
Vous devez définir le chemin d'accès absolu.
Mettre ceci dans votre bootstrap.php fichier.
C'est votre appel:
OriginalL'auteur Franz Holzinger
Je pense que @Franz Holzingers réponse est sur le point droit, sauf que la version de PHP mot que j'ai installé aujourd'hui exige le convertisseur nom DomPDF. La méthode échoue si elle est tout en majuscule, comme illustré. Aussi la version que j'ai installé à jour utilise un fichier de configuration ainsi, alors que les appels explicites de travail, si vous les placer après le fichier de configuration de charges, ils sont écrasés si vous placer avant la configuration de la charge. Je propose une réponse est plus simple pour localiser le fichier "phpword.ini.dist" situé dans le répertoire ci-dessus "src" dans le phpword répertoires d'installation; modifier la ligne pour le DomPDF répertoire où vous avez installé DomPDF et puis enregistrez le fichier dans le même répertoire, mais sous le nom de phpword.ini. Maintenant, la configuration du chargeur d'effectuer les appels que Frank documenté pour vous. Si vous entrez le chemin d'accès à DomPDF de façon incorrecte, vous n'obtenez pas d'avertissement, mais vous pouvez tester qu'il est installé correctement à l'aide de la méthode \PhpOffice\PhpWord\:: Paramètres de getPdfRendererPath(domPdfPath); Si le retour de cette méthode est vide, cela signifie que le nom du chemin d'accès que vous avez spécifié dans le fichier de configuration n'existe pas. Notez que le chargeur ne permet pas de vérifier que le chemin d'accès contient DomPDF, seulement que le chemin existe.
Il est intéressant de noter qu'à cette époque, phpword prend en charge trois PDF moteurs de rendu. L'un des trois peut être configuré dans le fichier ini mentionnés ci-dessus en fournissant le chemin d'accès de l'installation et de configuration le nom de l'convertisseur PDF pour l'une de ces valeurs (sensible à la casse): DomPDF, TCPDF ou MPDF. DomPDF est conseillé et par défaut, mais il semble que dans le code que si vous avez un investissement ou d'une préférence pour l'une des autres, vous pouvez le servir avec phpword.
L' \PhpOffice\PhpWord\Paramètres a ces constantes: PDF_RENDERER_DOMPDF, PDF_RENDERER_TCPDF, PDF_RENDERER_MPDF qui peut être utilisé avec \PhpOffice\PhpWord\:: Paramètres de setPdfRendererName. Si vous utilisez Compositeur, ajoutez cette ligne dans le script de démarrage: define('DOMPDF_ENABLE_AUTOLOAD', false);
OriginalL'auteur Ted Cohen