- ベストアンサー
PHPからVBで作った文書印刷処理(EXE)を起動し、ネットワークプリンタへ印刷したい。
PHPからVBで作った文書印刷処理(EXE)を起動し、ネットワークプリンタへ印刷したいのですが、マイクロソフトドキュメントライターへ出力されてしまいます。 しかし、コンソールから直接EXEを起動するとちゃんとネットワークプリンタへ出力されます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Apacheはどのユーザ権限で動くサービスになっている? コンソールから実行したときと同じユーザアカウントで動くサービスになっているか? ユーザが違うならデフォルトプリンタも違うだろうから当然質問者のような環境の結果になっても不思議ないけどどうなっている?
その他の回答 (3)
- doran357
- ベストアンサー率24% (23/93)
>この状態でも残念ながらプリンタへの印刷はされない状況です。 印刷されないは? マイクロソフトドキュメントライターに出力されると言うことか?
お礼
今回のご質問させていただいた内容に関しまして、新たにネットワークプリンタを購入することでネットワーク経由での印刷ができることが確認できました。 印刷できなかった原因として、Windows 2003 Serverに接続したプリンタに対して印刷しようとしていたことが原因のようです。 もしかすると、Windows 2003 Serverの設定を行うことでも、印刷ができるようになるかも知れませんが、今回はネットワークプリンタに印刷することが目的であったため本件は解決とさせていただきます。 ご回答いただいた皆様ありがとうございました。
補足
説明不足となってしまい申し訳ありませんでした。 ドキュメントライターへの出力はされなくなりました。 また、一つ気がついたことなのですが、PHPからprint.exeを実行した際に、 プリンタの状態を確認したところ「アクセス拒否-接続できません」と表示されました。 一応プリンタへのアクションは行われているようなのですが、印刷までには至らない状況です。 これはprint.exe内でプリンタへの絶対名を指定した場合と、指定しなかった場合で共に確認されました。
ANo.2さんが回答しているように、おそらく、直接print.exeを起動したときのアカウントと、Apacheが動いているアカウントが違うのだと思います。 対策ですが、印字を「通常のプリンタ」に指定するのではなく、ネットワークプリンタの絶対名(ネットワークパスを含む)で指定するようにprint.exeを改良してください。PHPの方では対処しようがありませんので。
補足
ご回答いただきありがとうございます。 i80286さんから頂きましたご意見を参考に、print.exeにネットワークプリンタの絶対名を指定してみました。 しかし、現在も印刷ができない状態です。 ユーザーアカウントに関しましてはNo.2のdoran357さんの補足として書かせていただいたとおりです。 それと、私のほうで提供すべき情報で一部抜けてしまっていたことで申し訳ないのですが、 プリンタは一般的なイーサネットで接続できるものを使用しておらず、 Windows 2003 ServerがインストールされたPCにパラレルケーブルで接続されたプリンタをLAN経由で共有し使用している状態です。 このような環境が印刷できない原因にもなりうるのでしょうか?
その文書印刷処理(EXE)には、プリンタを指定するオプションスイッチがあるのではありませんか? コマンドライン(コンソール)から指定する場合の命令をお知らせください。
お礼
早速のお返事を頂き誠にありがとうございます。 只今担当者が不在です。 本日の夜になってしまいますが、改めて担当者から連絡をさせます。 誠に申し訳ありません。
補足
連絡が遅くなってしまい大変申し訳ありません。 本質問の詳細を以下に記述させていただきます。 現在、あるシステム構築のためHTML(JavaScript)、PHPを使用したWEBアプリケーションの開発を行っております。 このシステムは、LAN上で使用することを目的としているため、外部のレンタルサーバー等は利用せず、 ApacheをインストールしたPCを用意し、自前のWEBサーバーを構築しています。 ここで、いま行いたい事なのですが、クライアント側のブラウザに表示させた「印刷」ボタンを押下することで LAN内のネットワークプリンタに帳票を印刷させたいのです。 この帳票は、印刷するべき雛型が決まっており、現在はExcelで作成されています。 PHPから直接このExcelファイルを操作し、帳票として印刷できれば最良なのですが、 その方法が見つからなかったため、苦肉の策としてVBでこのExcelファイルを操作、印刷するprint.exeを作成しました。 このprint.exeを起動する際の手順は以下のとおりです。 1. PHPにより帳票に必要なデータをcsv形式でファイル出力。 2. PHPからprint.exeを起動。 3. print.exeがcsvファイルと上記Excelをもとに帳票出力(…させたい)。 このとき、PHPからprint.exeが起動できたことは確認できました。 しかし、印刷の出力先が実際のプリンタではなく「Microsoft XPS Document Writer」への出力となってしまいます。 ※このときに作成させるXPSファイルの内容はただしく表示されています。 また、実際に印刷させたいプリンタは「通常使うプリンタ」として設定してあり、 print.exeを単体で起動させた場合は、csvファイルの内容からネットワークプリンタに印刷されることが確認できています。 PHPからprint.exeを起動させた場合のみ「Microsoft XPS Document Writer」で印刷されてしまうという状況です。 大変長い説明となってしまい申し訳ありません。 もし、このような現象についてなにかご存知でしたらご教授いただければ幸いです。 よろしくお願いいたします。 【サーバー環境】 Windows XP Professional Apache 2.2 PHP 5.2.11 【クライアント環境】 Windows XP Professional FireFox 3.6
補足
ご回答いただきありがとうございます。 doran357さんから頂いたご意見を参考に以下の手順を行いました。しかし残念ながら現在も印刷ができない状況です。 もし、以下の手順で何か間違っている点がありましたらご指摘をお願いいたします。 1.[コントロールパネル]-[管理ツール]-[サービス]-[Apache2.2]-[ログオン]タブを開く。 2.ログオンの種類として「ローカル システム アカウント」が選択されていたため、「アカウント」を選択し、現在ログインしているPCのアカウントとパスワードを指定。 3.Apacheサービスを再起動。 4.タスクマネージャを開いた状態で、Web画面上から印刷を実行。 これにより、print.exeが設定したユーザー名で実行されていることが確認できました。 (※上記手順を実施するまでは、print.exeが「SYSTEM」というユーザーで実行されていました。) この状態でも残念ながらプリンタへの印刷はされない状況です。 上記手順での誤りやそれ以外で必要な設定等ございましたらご教授しただければ幸いです。 よろしくお願いいたします。