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

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

新規登録して質問してみよう
ただいま回答率
85.31%
印刷

印刷とは、インキを用いて紙などの被印刷物に機械的に複製することを指します。現在は紙などの2次元の媒体だけでなく、3次元の曲面にも直接印刷する技術など様々な開発が進んでいます。

PHP

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

Q&A

1回答

108閲覧

Exmentのプラグインについて

ya7gisawa

総合スコア0

印刷

印刷とは、インキを用いて紙などの被印刷物に機械的に複製することを指します。現在は紙などの2次元の媒体だけでなく、3次元の曲面にも直接印刷する技術など様々な開発が進んでいます。

PHP

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

0グッド

0クリップ

投稿2025/05/01 05:40

実現したいこと

Exmentの詳細ページにボタンを追加して、ボタンの押下で該当ページを印刷したいです。
プラグインで機能を追加しようと考えています。

発生している問題・分からないこと

ボタンを押下しても印刷されない。
エラーも発生しないため何がおかしいのかが不明で修正に手間取っています。

該当のソースコード

PHP(公式1)

1<?php 2namespace App\Plugins\TestPluginDownload; 3 4use Exceedone\Exment\Services\Plugin\PluginButtonBase; 5 6class Plugin extends PluginButtonBase 7{ 8 /** 9 * Plugin Button 10 */ 11 public function execute() 12 { 13 // base64文字列、Content-Type、ファイル名を配列で返却する 14 $base_path = base_path('public/vendor/exment/images/user.png'); 15 $fileName = 'user.png'; 16 return [ 17 'fileBase64' => base64_encode(\File::get($base_path)), 18 'fileContentType' => \File::mimeType($base_path), 19 'fileName' => $fileName, 20 21 // 任意:「ダウンロードが完了しました」メッセージを表示する 22 'swaltext' => 'ダウンロードが完了しました', 23 ]; 24 } 25}

PHP(公式2)

1<?php 2namespace App\Plugins\PluginDemoButton; 3 4use Exceedone\Exment\Services\Plugin\PluginButtonBase; 5class Plugin extends PluginButtonBase 6{ 7 /** 8 * Plugin Button 9 */ 10 public function execute() 11 { 12 \Log::debug('Plugin calling'); 13 14 15 // 戻り値による画面遷移の詳細 ---------------------------------------------------- 16 // true : 「実行完了しました!」と画面右上に表示し、その画面でリロードする 17 return true; 18 19 // true : 「○○が正常に完了しました!この後は××の処理を行ってください」と、独自メッセージを表示する 20 // return [ 21 // 'result' => true, 22 // 'swaltext' => '○○が正常に完了しました!この後は××の処理を行ってください', 23 // ]; 24 25 // true : 「実行完了しました!」と表示し、別のページにリダイレクトする 26 // return redirect('https://github.com/exceedone/exment'); 27 // return admin_url('/'); 28 29 // false : 「○○のエラーが発生しました」と、独自エラーメッセージを表示する 30 // return [ 31 // 'result' => false, 32 // 'swaltext' => '○○のエラーが発生しました', 33 // ]; 34 35 36 // (v3.4.1対応)「一覧画面のメニューボタン」から呼び出しを行った場合 --------- 37 // 一覧画面でチェックを行っていたデータの、CustomValueオブジェクト一覧。\Illuminate\Support\Collection型 38 // $custom_values = $this->selected_custom_values; 39 } 40 41 /** 42 * (v3.4.3対応)画面にボタンを表示するかどうかの判定。デフォルトはtrue 43 * 44 * @return bool true: 描写する false 描写しない 45 */ 46 // public function enableRender(){ 47 // 例1:選択しているデータのidが2の場合ボタンを表示する 48 //return $this->custom_value->id % 2 === 0; 49 50 // カスタム列の値「status」が「active」の場合にボタンを表示する 51 // return $this->custom_value->getValue('status') === 'active'; 52}

PHP(ChatGPT)

1<?php 2namespace App\Plugins\TestPluginDownload; 3 4use Exceedone\Exment\Services\Plugin\PluginButtonBase; 5 6class Plugin extends PluginButtonBase 7{ 8 /** 9 * Plugin Button 10 */ 11 public function execute() 12 { 13 return [ 14 'script' => $this->getPrintScript(), 15 ]; 16 } 17 18 /** 19 * 印刷用のJavaScriptコードを生成 20 */ 21 private function getPrintScript() 22 { 23 return <<<EOT 24 <script> 25 function printPage() { 26 window.print(); 27 } 28 printPage(); 29 </script> 30 EOT; 31 } 32}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

公式1と2のコードをChatGPTに読み込ませた上で、印刷ボタンを押下するとページが印刷されるコードを作成するように指示しました。
すると3つ目のコードが生成されましたが、実行してもエラーが表示されずページが更新されるだけの動作しかしないため、何が悪いのか分からない状態です。

補足

参考にした公式資料説明書
https://exment.net/docs/#/ja/plugin_quickstart_button

Exmentバージョン:v6.2.3

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

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

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

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

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

guest

回答1

0

PHPで印刷するという意図がわからないのですが、javascriptでprintを発行するのではダメなのでしょうか?

https://developer.mozilla.org/ja/docs/Web/API/Window/print

サーバーサイド側で印刷するということは、サーバーから所定のネットワークプリンタに対してLPRなどで印刷データを送り込む作業になります。そうなると環境に依存するので単純な解決策を提案しにくい案件だと思います

投稿2025/05/01 08:11

編集2025/05/01 08:13
yambejp

総合スコア117671

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問