
PHP(5.3.1)を使ってサーバー上のエクセルファイル sample.xlsxを印刷しようと思いましたが思うようにいきません。
PHPでサーバー上のbatファイルを呼び出し、そのbatからvbsでバックグラウンド印刷させようとしています。
社内ネットワークでのアプリでして、プリンタは条件によって部署ごとのプリンタが指定されるので変数になっています。
PHP:
$ret = exec("cmd.exe /c C:\\xampp\htdocs\excelprint.bat $printerName");
bat:
cscript C:\xampp\htdocs\xlsprint.vbs C:\xampp\htdocs\sample.xlsx %1
vbs:
Set xl=CreateObject("Excel.Application")
xl.AutomationSecurity=2
xl.Visible = false
Set bk=xl.WorkBooks.Open(WScript.Arguments.Item(0))
Call bk.PrintOut(,,,,WScript.Arguments.Item(1))
bk.Close
Set bk=Nothing
xl.Quit
Set xl=Nothing
以上のような感じでやってみたのですが印刷されませんでした。
$printerNameがAdobePDFやMSのドキュメントライターのような仮想プリンタの場合は
サーバー側で印刷ダイアログ(保存しますか?というやつです)が表示されていますが、
通常の紙に印刷されるプリンタは反応しませんでした。
batファイルの%1をプリンタ名に変えて、batファイルをダブルクリックした場合は印刷されました。
何がまずいのか判る方がいらっしゃれば、教えてください。
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>$ret = exec("cmd.exe /c C:\\xampp\htdocs\excelprint.bat $printerName");
$cmd = "cmd.exe /c C:\\xampp\htdocs\excelprint.bat $printerName";
print $cmd . "<br />" . PHP_EOL;
$ret = exec($cmd);
などとして、コマンドの中身を確認してください。
最初(C:\\xampp)はちゃんとescapeしているのに、後半の「\」(2ヶ所)をescapeしていないのは転記するときのtypoでしょうか?
この回答への補足
コマンドの中身は期待通りのものでした。
サーバーのコマンドプロンプトに貼りつけて実行させた場合は印刷されました。
自宅でソースを思い出しながら書いたため、エスケープミスがあったのはすいませんでした。
加えてコマンドの部分も
$cmd = "cmd.exe /c C:\\xampp\htdocs\excelprint.bat " . $printerName ;
が正しいソースでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vbaでPDFファイルが印刷されない
-
印刷要求順番と印刷出力順番が...
-
VBAで印刷スプール終了の判定を...
-
クリレポのプリンタ設定について
-
2回以上PDFをコピーや印刷がで...
-
VB6上から印刷ダイアログを表示...
-
URLを指定して直接印刷って出来...
-
ACCESSで設定した帳票の用紙サ...
-
VBで帳票するサンプル
-
VB.NETで罫線付きのデータを印...
-
イベントプロシージャ 印刷が...
-
印刷ダイアログを表示させない方法
-
PHPでPDFファイルの直接印刷
-
エクセルのVBAでプリンタを変更...
-
Excel VBA オブジェクトが必要...
-
ファイルのパス指定での印刷方法
-
PDFファイルを印刷し終了するには
-
プログラムからプリンタジョブ...
-
Designer.vbは直接コードをいじ...
-
ManagementClassが見つからない。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
印刷要求順番と印刷出力順番が...
-
印刷ダイアログを表示させない方法
-
PHPでPDFファイルの直接印刷
-
2回以上PDFをコピーや印刷がで...
-
vbaでPDFファイルが印刷されない
-
印刷ダイアログを表示させたくない
-
VBAで印刷の成功判定
-
VB6上から印刷ダイアログを表示...
-
ACCESSで設定した帳票の用紙サ...
-
クリレポのプリンタ設定について
-
オートメーションエラー(214741...
-
プリンターを指定して印刷するには
-
VBでExcel印刷する時のプリンタ...
-
EXCELファイルの複数ダウンロー...
-
VBAで印刷スプール終了の判定を...
-
ActiveReportsを使って[印刷ダ...
-
イベントプロシージャ 印刷が...
-
VB.NET+ActiveReports で印刷...
-
A4の2枚をA3の1枚にする編集方法?
-
VBからプリンタに出力する時に...
おすすめ情報