PHPWord
を使用して、テンプレートから.docx
ファイルを作成しています。正常に動作しますが、生成されたファイルをPDF
に変換したいと思います。
最初にtcpdf
を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");
しかし、ファイルをロードしてPDF
に変換しようとすると、ファイルのロード中に次の例外が発生します
致命的なエラー:「セクションにPreserveTextを追加できません」というメッセージが表示されるキャッチされていない例外「BadMethodCallException」
いくつかの調査の後、他にもいくつかこのバグがあることがわかりました( phpWord-セクションにPreserveTextを追加できません )
[〜#〜]編集[〜#〜]
さらに調べてみたところ、
Exception
は、ドキュメントにmail merge fields
が含まれている場合にのみ発生することがわかりました。それらを削除すると、Exception
は表示されなくなりますが、変換された
PDFを生成する別の方法を使用することを考えましたが、4つの方法しか見つけることができませんでした。
PHPWord
とtcpdf
、ただし画像が欠落しているためまだ使用できず、ほとんどの(すべてではない)スタイルPDFを生成する5番目の方法はありますか?または、生成されたPDFドキュメントを美しく見せるための解決策はありますか?
保存する前にPDFファイルのリンクを解除しようとしています。また、PDFではなく、DOCXドキュメントのリンクを解除する必要があります。
これを試して。
$pdfWriter = \PhpOffice\PhpWord\IOFactory::createWriter($wordPdf , 'PDF');
$pdfWriter->save($filename.".pdf");
unlink($wordPdf);
私は Gears/pdf を使用して、phpwordで生成されたdocxファイルをPDFに変換しました。
$success = Gears\Pdf::convert(
'file_path/file_name.docx',
'file_path/file_name.pdf');
これを試して:
// get the name of the input PDF
$inputFile = "C:\\PHP\\Test1.docx";
// get the name of the output MS-Word file
$outputFile = "C:\\PHP\\Test1.pdf";
try
{
$oLoader = new COM("easyPDF.Loader.8");
$oPrinter = $oLoader->LoadObject("easyPDF.Printer.8");
$oPrintJob = $oPrinter->PrintJob;
$oPrintJob->PrintOut ($inputFile, $outputFile);
print "Success";
}
catch(com_exception $e)
{
Print "error code".$e->getcode(). "\n";
print $e->getMessage();
}