web-dev-qa-db-ja.com

PHPWordを使用してWord文書をPDFに変換する方法

PHPWordを使用してMicrosoft Wordレポートを作成しています。基本的にテンプレートから始めて、フィールドにデータを入力し、Wordレポートとして保存します。

このレポートをPDFファイルに変換したいと思います。生成されたdocファイルをPHPWordでロードしてみました。ただし、pdfファイルを保存すると、書式がすべて失われます。

これが私が使用しているコードです:

       require_once DOC_ROOT . '/vendor/phpoffice/phpword/bootstrap.php';

$path_to_tcpdf = DOC_ROOT . '/includes/plugins/TCPDF/'; // C:\xampp\htdocs\clients\corporate\includes\plugins\TCPDF
\PhpOffice\PhpWord\Settings::setPdfRendererPath($path_to_tcpdf);
\PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF');

$report_file_doc = DOC_ROOT . '/reports/business_report_U72900GJ2002PTC040573_68628.docx';
$report_file_pdf = DOC_ROOT . '/reports/business_report_U72900GJ2002PTC040573_68628.pdf';



$phpWord = \PhpOffice\PhpWord\IOFactory::load($report_file_doc); 
$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord , 'PDF');

$xmlWriter->save($report_file_pdf);  

何が欠けている可能性がありますか?

ありがとう

6
Kiran

PHPWordの場合v0.14

TCPDFレンダラーの例を示します(v0.13で非推奨):

// Require composer autoloder.
require __DIR__.'/vendor/autoload.php';

use PhpOffice\PhpWord\IOFactory;
use PhpOffice\PhpWord\Settings;

// Set PDF renderer.
// Make sure you have `tecnickcom/tcpdf` in your composer dependencies.
Settings::setPdfRendererName(Settings::PDF_RENDERER_TCPDF);
// Path to directory with tcpdf.php file.
// Rigth now `TCPDF` writer is depreacted. Consider to use `DomPDF` or `MPDF` instead.
Settings::setPdfRendererPath('vendor/tecnickcom/tcpdf');

$phpWord = IOFactory::load('document.docx', 'Word2007');
$phpWord->save('document.pdf', 'PDF');

DomPDFレンダラーの例を次に示します。

// Require composer autoloder.
require __DIR__.'/vendor/autoload.php';

use PhpOffice\PhpWord\IOFactory;
use PhpOffice\PhpWord\Settings;

// Make sure you have `dompdf/dompdf` in your composer dependencies.
Settings::setPdfRendererName(Settings::PDF_RENDERER_DOMPDF);
// Any writable directory here. It will be ignored.
Settings::setPdfRendererPath('.');

$phpWord = IOFactory::load('document.docx', 'Word2007');
$phpWord->save('document.pdf', 'PDF');
6
Anton Pelykh

私が正しいかどうかはわかりませんが、ドキュメントをHTMLコンテンツとして保存します。その後、HTMLファイルのコンテンツを読み、コンテンツをPDF mPDFまたはtcPdfの助けを借りてファイルとして記述しますまたはfpdf。

 $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML'); 

詳細はこちら

0
Neha