Sto creando i file .docx
da un modello utilizzando PHPWord
. Funziona bene ma ora voglio convertire il file generato in PDF
.Genera PDF da .docx generato da PHPWord
Per prima cosa ho provato ad utilizzare tcpdf
in combinazione con PHPWord
$wordPdf = \PhpOffice\PhpWord\IOFactory::load($filename.".docx");
\PhpOffice\PhpWord\Settings::setPdfRendererPath(dirname(__FILE__)."/../../Office/tcpdf");
\PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF');
$pdfWriter = \PhpOffice\PhpWord\IOFactory::createWriter($wordPdf , 'PDF');
if (file_exists($filename.".pdf")) unlink($filename.".pdf");
$pdfWriter->save($filename.".pdf");
ma quando provo a caricare il file per convertirlo in PDF
ottengo la seguente eccezione durante il caricamento del file di
Fatal error: Uncaught exception 'BadMethodCallException' with message 'Cannot add PreserveText in Section.'
Dopo alcune ricerche ho scoperto che anche altri hanno questo bug (phpWord - Cannot add PreserveText in Section)
EDIT
After trying around some more I found out, that the
Exception
only occurs when I have somemail merge fields
in my document. Once I removed them theException
does not come up anymore, but the converted
Avevo pensato di usare un altro modo per generare il PDF, ma sono riuscito a trovare solo 4 modi:
- Uso OpenOffice - Impossible poiché non riesco a installare alcun software sul server. Anche andando nella direzione menzionata here non ha funzionato sia come il mio hoster (Strato) utilizza SunOS come il sistema operativo e questo ha bisogno di Linux
- Utilizzando phpdocx - non ho alcun budget per pagare e la demo non è possibile creare PDF
- Utilizzando PHPLiveDocx - Questo funziona, ma ha il limite di 250 documenti al giorno e 20 all'ora e devo convertire arround 300 documenti in una sola volta, forse anche più volte al giorno
- Utilizzando PHP-Digital-Format-Convert - l'uscita sembra meglio che con
PHPWord
etcpdf
, ma ancora non utilizzabile come immagini sono mancanti, e la maggior parte (non tutti!) Gli stili
C'è un quinto modo per generare il PDF? O c'è qualche soluzione per rendere i documenti PDF generati un aspetto gradevole?
output PDF decente probabilmente richiederà di creare un secondo modello (hai già un modello di MSWord, Si procederà ora vuoi un modello PDF che porti il tuo documento sorgente all'input che tcpdf vuole). –
@Rob_M Sì, ho già pensato di creare un modello HTML in quanto ci sono librerie per convertire HTML in PDF, ma ho un modello molto diverso, quindi sarebbe molto lavoro creare e riscrivere il modo in cui riempio con il contenuto, quindi spero che ci sia un altro modo più semplice ... – Pinguin895
Questo link potrebbe aiutare: https://github.com/PHPOffice/PHPWord/issues/311 –