質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

6197閲覧

PHPを使ってdocxファイルをPDFにしたい

oor

総合スコア12

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/07/31 13:26

編集2016/07/31 14:40

###前提・実現したいこと
PHPWordを使ってWordを作成するシステムを作っています。
作成したWordファイル(.docx)をpdf形式に表示させる方法がわからないです。
現在はWordに出力することはできています。

docxファイルをpdfにする方法を教えてください!

###PHPWord
PHPWordは以下のサイト参考に導入しました。ダウンロードした「PHPWord.php」と「PHPWord」フォルダをプロジェクトと同じ階層に入れています。

http://phpjp.info/?PHPWord%20Word%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90

###該当のソースコード

php

1<?php 2require_once 'PHPWord.php'; 3 4$PHPWord = new PHPWord(); 5 6$section = $PHPWord->createSection(); 7 8$section->addText('Hello world!'); 9$section->addText('初めてのPHPWord'); 10 11$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); 12$objWriter->save('hogehoge.docx'); 13 14PhpWord\Section\Settings::setPdfRendererPath('tcpdf'); 15 16PhpWord\Section\Settings::setPdfRendererName('TCPDF'); 17 18 19$objWriter2 = PHPWord_IOFactory::createWriter($PHPWord, 'PDF'); 20$objWriter2->SetFont('kozminproregular', '', 12);// 日本語フォント 21$objWriter2->save('helloWorld.pdf'); 22 23?>

###[追記]Settings.phpファイルの位置と中身が違う?

php

1\PhpWord\Settings::setPdfRendererPath('tcpdf'); 2\PhpWord\Settings::setPdfRendererName('TCPDF'); 3

Settings.phpがSectionフォルダ入っていたため
下記に変更しました。

php

1PhpWord\Section\Settings::setPdfRendererPath('tcpdf'); 2PhpWord\Section\Settings::setPdfRendererName('TCPDF');

またSettings.phpにsetPdfRendererPath、setPdfRendererNameがともになかったです。
この場合どうしたらよいでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

旧バージョンを使っていたため、上手く行かなかった。

下記のサイトからPHPWordを導入し、
https://github.com/PHPOffice/PHPWord

また、TCPDFをダウンロードし、その「TCPDF」フォルダを同じプロジェクト内に入れることでPDF出力できた。

投稿2016/07/31 16:57

oor

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

以下はバージョン違いだったため参考になりません。ごめんなさい

PDF 出力はたいてい

php

1//tcpdfのダウンロードが必要 2\PhpOffice\PhpWord\Settings::setPdfRendererPath('./tcpdf'); 3\PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF');

が書かれてますが

  1. PHPWord はネームスペース付きではないか?
  2. TCPDF が必要ではないのか?

ですかねぇ

投稿2016/07/31 13:38

編集2016/07/31 15:09
asahina_dev

総合スコア610

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oor

2016/07/31 14:03

回答ありがとうございます。質問のコードを変更しました。 1. 参考サイトではつけていなかったので、そのまま引用しています。Wordの出力自体はできています。 2. tcpdfをダウンロードし、フォルダをプロジェクトと同じ階層に入れました。回答のコードを入れたのですが、そこでエラーが発生しているようです。
oor

2016/07/31 14:45 編集

質問に追記を書きました。変更後のコードで正しいでしょうか?
asahina_dev

2016/07/31 14:59

旧バージョン(ネームスペース非対応)と新バージョン(ネームスペース対応)の差異がでかすぎるから多分違うです。
asahina_dev

2016/07/31 15:08

明日余裕あるときに確認してみます。 頭はたらいてないからだめぽ・・
oor

2016/07/31 15:58

すみません。。。遅くまでありがとうございます。 新バージョンで少し試行錯誤してみます。
oor

2016/07/31 16:58

新バージョンにしたらできました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問