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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PDF

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

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

1回答

1980閲覧

LibreofficeでPDFに変換できない

lplplp

総合スコア13

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PDF

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

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

2クリップ

投稿2018/08/16 04:48

編集2018/08/16 06:04

お世話になっております。

現在、web上でPDFをダウンロードする処理を作成しています。
PDF出力ボタンを押下で以下の関数が実行されるようになっております。
「public/temp/sample.xlsx」にExcelのテンプレートを用意し、そのテンプレを読み込み編集し、
「public/excel/sample.xlsx」に編集したExcelを保存します。
そして編集したExcelをLibreofficeのコマンドでPDFに変換させたいです。
原因が分からなかったので質問させていただきました。
よろしくお願いいたします。

php

1 /** 2 * PDF出力 3 */ 4 public function pdf(Request $request){ 5 6 //Libreofficeのパス 7 $LIBRE_PATH = "storage/install/LibreOfficePortable/App/libreoffice/program/soffice.exe"; 8 $month = $request->input('pdf_month'); 9 $code = $request->input('code'); 10 $name = $request->input('name'); 11 $filepath = public_path().'/temp/sample.xlsx'; 12 $dt = date('Y/m/d'); 13 $money = $this->getdata_sum($code, $month); 14 15 //Excel読み込み 16 Excel::load($filepath,function($excel)use($money,$month,$name){ 17 $date = date('Y年m月d日'); 18 $obj_sheet = $excel->getSheet(0); 19 $obj_sheet->setCellValue("W2", $date); 20 $obj_sheet->setCellValue("A3", $name); 21 $obj_sheet->setCellValue("F14", $month); 22 $obj_sheet->setCellValue("F15", number_format($money,2).'円'); 23 }) 24 ->store('xlsx',public_path().'/excel'); 25 26 $path = base_path('public'); 27 28 $command = "$LIBRE_PATH --headless --convert-to pdf:writer_pdf_Export $path/excel/sample.xlsx"; 29 30 passthru($command); 31 32 }

apacheのログには以下のように記載されていました。

apache

1指定されたパスが見つかりません。

以下、$commandの内容です。
"storage/install/LibreOfficePortable/App/libreoffice/program/soffice.exe --headless --convert-to pdf:writer_pdf_Export C:\xampp\htdocs\test\public/excel/sample.xlsx"

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

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

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

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

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

showkit

2018/08/16 05:35

コマンドと出力先のディレクトリが存在するか確認しましょう。$path などの $ で記述してあるシンボルがコマンド実行時に有効であるか確認しましょう。
lplplp

2018/08/16 06:03 編集

ディレクトリは存在しています。$も有効でした。
guest

回答1

0

ベストアンサー

パスやシンボルが 一般ユーザにとって有効であっても、apache で有効とは限りません。

面倒なようですが

php

1error_log(sprintf("[%d] メッセージ", __LINE__));

のような形式でキーとなる行の前後にログをいれて、apache のエラーメッセージがどの行を実行しているところで出力されているかを確定して。
「指定されたパスが見つかりません。」がどのパスを指すかを突き止めるのが良いかと思います。

(もっと的確な回答をつける方がいらっしゃることをお祈りしますが・・・)

投稿2018/08/16 06:34

showkit

総合スコア1638

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

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

lplplp

2018/08/16 06:42

回答ありがとうございます。 パスの箇所をlaravelのヘルパー関数を使用することで正常にうごくようになりました。 $LIBRE_PATH = storage_path('install/LibreOfficePortable/App/libreoffice/program/soffice.exe');
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問