none
Web上のデータを綺麗に、また、一括印刷するには? RRS feed

  • 質問

  • 初めまして。yoccoと申します。
    LAMP環境で業務アプリを開発しています。

    Webアプリで業務アプリを開発する場合の困りごとで、印刷時の問題があるのではないかと思います。

    困っていることは
    ブラウザの印刷機能を使わずに、綺麗に表組したり、多量のデータ一括印刷することです。

    皆さん、どのように解決しているかご意見をお伺いしたいと思います。

    1つ考えたの・・・
    (1).NETのクライアントアプリでWEBサーバーへアクセスしてデータを取得
    (2)取得したデータをクリスタルレポートなどを使って印刷

    実現方法としては・・・
    (1)クライアントアプリがSOAPを使ってWEBからデータを取得
    (2)SOAPのデータ(XML?)をレポーティングツールで印刷

    このような実現方法で、やってらっしゃる方いらっしゃいますでしょうか?

    他に要件や環境としては・・・
    ・データ取得時、業務アプリのユーザ情報でアクセス認証したい
    ・クライアントからWebサーバーへは、HTTPかHTTPSでのアクセスのみ

    現実的なところでは、
    印刷結果のリストをPDFとしてサーバーで作成してダウンロードさせて、クライアントで印刷させようかと思っています。

    よかったら、皆さんご意見やお知恵をいただけませんでしょうか?
    宜しくお願いします。

    2010年11月9日 11:13

回答

  • HTMLのスタイルシートには@mediaルール があり、画面向けと印刷向けとで別々のスタイルを適用することが可能です。これを使うとブラウザの印刷機能でも、きれいな印刷結果が得られるかもしれません。
    • 回答としてマーク 山本春海 2010年12月1日 2:50
    2010年11月9日 11:37
  • > 印刷結果のリストをPDFとしてサーバーで作成してダウンロードさせて、クライアントで印刷させようかと思っています。
    個人的には可能であればこれが一番簡単だと思います。

    LAMP環境ということなのであれですが、Flash + ASP.NETを使ったときにはActiveReportsとかの
    3rdパーティの帳票ツールを使ったこともありました。これはクライアントのブラウザにプラグインが必要
    だったと思います。クリスタルレポートでもできるのかな?

    印刷だけをWindowsのクライアントアプリでというのは考えたことはありますが、
    実行に移したことはありません。場合によっては使えるかもしれません。

    • 回答としてマーク 山本春海 2010年12月1日 2:50
    2010年11月10日 0:05
  • 私の場合はクリスタルレポートでPDFもしくはExcel形式でエクスポートし、それをクライアントのブラウザに送り込むことが多いです。私はサーバー上で一時ファイルにエクスポートしていましたが、メモリ上でもできるようです。

    (参考)
    ASP.NETでCrystalReportsのエクスポートファイルをダウンロードするには?
    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27019&forum=7

    Webアプリの画面と印刷したい帳票のレイアウトは必ずしも一致しませんので、ブラウザ単独の印刷機能を使ったとしても限界がありますので、できればレポートツールを使用された方が良いと思います。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク 山本春海 2010年12月1日 2:50
    2010年11月10日 5:31
    モデレータ

すべての返信

  • HTMLのスタイルシートには@mediaルール があり、画面向けと印刷向けとで別々のスタイルを適用することが可能です。これを使うとブラウザの印刷機能でも、きれいな印刷結果が得られるかもしれません。
    • 回答としてマーク 山本春海 2010年12月1日 2:50
    2010年11月9日 11:37
  • > 印刷結果のリストをPDFとしてサーバーで作成してダウンロードさせて、クライアントで印刷させようかと思っています。
    個人的には可能であればこれが一番簡単だと思います。

    LAMP環境ということなのであれですが、Flash + ASP.NETを使ったときにはActiveReportsとかの
    3rdパーティの帳票ツールを使ったこともありました。これはクライアントのブラウザにプラグインが必要
    だったと思います。クリスタルレポートでもできるのかな?

    印刷だけをWindowsのクライアントアプリでというのは考えたことはありますが、
    実行に移したことはありません。場合によっては使えるかもしれません。

    • 回答としてマーク 山本春海 2010年12月1日 2:50
    2010年11月10日 0:05
  • 私の場合はクリスタルレポートでPDFもしくはExcel形式でエクスポートし、それをクライアントのブラウザに送り込むことが多いです。私はサーバー上で一時ファイルにエクスポートしていましたが、メモリ上でもできるようです。

    (参考)
    ASP.NETでCrystalReportsのエクスポートファイルをダウンロードするには?
    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27019&forum=7

    Webアプリの画面と印刷したい帳票のレイアウトは必ずしも一致しませんので、ブラウザ単独の印刷機能を使ったとしても限界がありますので、できればレポートツールを使用された方が良いと思います。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク 山本春海 2010年12月1日 2:50
    2010年11月10日 5:31
    モデレータ
  • >佐祐理さん

    IEの古いバージョンだったかもしれませんが、mediaでprintを指定した場合にIEがフリーズするケースがると聞いたことがあります。IE6かな・・・。

    新しいバージョンのブラウザーならうまくいくかもしれませんね。

    ページ毎に絶対値座標指定や文字列の行のページまたがりの管理がうまくいけば使ってみたいですね。

    でも、他のメーカーのブラウザーもあるので・・・時間があれば検証してみたいところです。

    情報提供、ありがとうございました。

     

    >mars12さん

    PDFもそうですが、やはりクライアントサイドのプラグインになりますでしょうか。

    印刷以外にも、クライアントアプリでやれたほうが良いかなということもあります。

    1Webサーバーで、ブラウザ・クライアントアプリのいいとこ取りは虫が良すぎる考えでしょうか(汗

    ご意見ありがとうございます。

     

    >trapemiyaさん

    やはり業務系となってくるとツールがそろっている.NETがよさそうですね。

    EXCELエクスポートも要件として挙がってきてもおかしくないので・・・

    そろそろLAMP環境がつらくなってきました。

    2010年11月10日 9:25
  • > PDFもそうですが、やはりクライアントサイドのプラグインになりますでしょうか。
    > 印刷以外にも、クライアントアプリでやれたほうが良いかなということもあります。

    クライアントアプリであっても帳票ツールのランタイムは必要になるので、それでよければ、ということになるかと思います。
    比較的ハードルが低いのはやはりサーバでPDF作ってダウンロード、ということになると思います。
    後述の"アクセス認証"の点からもそう思います。

    > 1Webサーバーで、ブラウザ・クライアントアプリのいいとこ取りは虫が良すぎる考えでしょうか(汗

    普通の考えだと思います。別に一つのやり方で全部やる必要はないと思います。もっともユーザ側が許容すればの話ですが。

    あと、最初の質問の内容ですが、、
    >  (1)クライアントアプリがSOAPを使ってWEBからデータを取得
    > (2)SOAPのデータ(XML?)をレポーティングツールで印刷
    社内だけの閉じたシステムで、クライアントで印刷するならこの手段がよいかと思います。
    注意点としては
    > ・データ取得時、業務アプリのユーザ情報でアクセス認証したい
    をどうやって実現するかだと思います。クライアント側でブラウザのセッション情報が使えればいうことないのですが、まずできないと思います。かといって印刷の度にいちいちIDとPW入力させるわけにもいかないと思います。私にはClickOnceでアプリを配布することにしてワンタイム文字列みたいなのでやる方法しか思いつきません。この辺、いい方法があれば私も知りたいです。

    2010年11月11日 0:43
  • >mars12さん

    ClickOnceは初耳です。.NETフレームワーク(Javaにも?)はライブラリがそろっていてよさそうですね。

    SOAPでの認証はこんな感じでしょうか?

    http://msdn.microsoft.com/ja-jp/library/9z52by6a(VS.80).aspx

    PHPの環境にもSOAPのライブラリがそろっているので、やれるのかな?と思っています。

    http://php.net/manual/ja/book.soap.php

    自分は単純にPOSTやGETのリクエストの情報を使って、一般的なログインフォームでの処理のようにすれば良いのかなと考えていましたが・・・時間があったら検証してみたいです。

    ご意見ありがとうございます。

    2010年11月11日 10:15