• ベストアンサー

PHPでPDFファイルの直接印刷

HTML、PHP、JavascriptでWeb画面上から印刷枚数を指定し、Web画面上の「印刷」ボタンを押すと、直接、特定のファイルパスのPDFファイルを印刷できるようにしたいと思っています。 かなり検索したのですが、それを実現できるようなものが見当たりません。 どうかご教授ください。よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

PXDocについて、 所詮はXMLなので、PHPで、SVGの記述にそったXMLを出力すればよいです。ブラウザ側には、pxd拡張子で投げるため、 PHPで、header指定のコードを記述する必要はありそうです。 header("Content-type: application/pxd"); PXDocのサイト(参考URL)にサンプルとリファレンスがあります。 .pdx という拡張子がありますが、単なるXMLファイル(テキストファイル)なので、メモ帳なり秀丸なりで開けば、ああなるほどとわかると思います。 複雑な帳票で、テンプレートを作り、部分的に動的な値を埋め込む場合は、テンプレートをExcelとかOpenOffice.orgで作ってSVG保存したものを使えばよいと思います。 ※SVG(つまり実体はXML)はテキストファイルなので、 ユーザが内容を書き換えることが可能です。(書き換えようと思えばですが) PDFのように、編集不可にする手段はないのでご注意ください。

参考URL:
http://www.pxdoc.com/sample/index.htm

その他の回答 (2)

回答No.2

ボタンを押すと、直接印刷が開始する(つまり自動印刷)のことでしょうか。 それでしたら、印刷という行為の性質上、JavascriptとPDFでは、自動印刷を実現する ことは、対象範囲を超えているので、無理と思われます。 (Javascriptでブラウザのボタンを操作できないことと同じです。) 過去の質問で、サーバ→プリンタでPDFをコマンドラインで操作することにより 印刷する方法が紹介されていました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=967850 ただし、この方法は、イントラネットでは、ありかもしれませんが、 普通は、クライアントで印刷したいと思います。 以前、私もこれを考えたことがあり、結局もっとも現実的でスマートな方法と 感じたのは、 PHPで、SVGというXML形式のファイルを出力して、 PXDocという無償で利用できるソフトで印刷する方法です。 http://www.pxdoc.com/ 流れとしては、 サーバ側のPHPで、SVGを生成し出力。 ↓ PC側の、PXDocが自動的に呼ばれ、表示と同時に印刷が開始される。 (完全自動印刷機能を使えば、ダウンロードと同時に印刷が可能・・・らしい) という手です。 実際につかったことはないのですが、どうしてもWEBで自動印刷をとなった場合、 私はこの方法を使うと思います。 それでも、印刷枚数を指定することは無理と思われます。 (商用のActiveXでそのようなことができるものがあるかもしれませんが)

asa200711
質問者

お礼

回答ありがとうございます。 付け加え忘れていたのですが、WEB上での操作はサーバからのみ行う予定です。そのため、印刷はサーバからのみ可能であれば大丈夫です。 あと、ご提案していただいた、PHPで、SVGというXML形式のファイルを出力して、PXDocという無償で利用できるソフトで印刷する方法を検討したいと思います。そこで、伺いたいのですが、PHPでSVGというXML形式のファイルを出力する方法が分かりませんでした。 何度も申し訳ありませんが教えて頂けませんでしょうか?(できればサンプルコードも)

  • eitetsu
  • ベストアンサー率64% (22/34)
回答No.1

「特定のファイルパス」というのが、ローカルか、URL指定か、で変わるかとは思います。 #ローカルはできないかも・・・。 URL指定できるのであれば、フレームでそのPDFファイルを開いて、 Javascriptからdocument.[フレーム名].print();で、印刷ダイアログが開かないでしょうか?

asa200711
質問者

補足

実は、印刷ダイアログを開かずに印刷させたいと思っております。

関連するQ&A