- PR -

C#でPNGファイルを生データのまま印刷するには

投稿者投稿内容
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-05-09 17:28
こんにちは。

いろいろ書いていたら囚人さんが的確なフォローを入れてくださっていたので、私からは少
しだけ。

プリンタに画像を出力するときの流れというと

画像を圧縮したもの(JPEGだったりPNGだったり)

画像、というかデバイスコンテキスト

プリンタドライバ

プリンタ

という流れだと思います。
Win98/2000でのStretchDIBitsの拡張は「画像を圧縮したもの」を「画像」に変換す
る際に、ビットマップ形式しか扱えなかったものをJPEGとPNGにも対応しましたよ、という
ことではないでしょうか。
つまりデバイスコンテキストになってしまった時点でJPEGだろうとPNGだろうとましてや
ビットマップだろうと関係ないと。
そこからプリンタドライバがプリンタ独自の内部形式に変換してプリンタへ出力する感じだ
と思います。

なので

引用:
引用:
なせさんの書き込み (2006-05-09 14:27)

#そういうプリンタへの圧縮転送の方式とかあったら便利なのにねぇ


本当にそう思います。圧縮転送の方式がISOなどで規格を作って欲しいですね。


は、プリンタドライバ⇔プリンタ間の問題なので、ISO云々よりはプリンタメーカにお願いす
るような感じではないでしょうかね。

ここからは(例によって?)余談です
一般的にはプリンタドライバが内部形式で転送したデータをプリンタ本体が出力用の生
データに変換して出力、という感じになると思いますが、一部キヤノンの下位のページプ
リンタ(LBP-200とか)はドライバ側でプリンタが出力する生データを作成して転送すると
いうことをやっていたらしく、製品コストは抑えられるがPCのメモリと転送帯域をドカ食いす
る仕様だった…と記憶しています(今は変更されているんでしょうか?)。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2006-05-09 18:01
じゃぁ私はさらに余談に食いつくだけw
引用:

ドライバ側でプリンタが出力する生データを作成して転送すると...



ラスタ系ラインプリンタは全部この実装です。
往年の機種でも、最新の機種でも、色数と解像度の違いがあるだけでやってることは一緒(まるっきり同じじゃありませんが)です。

最近では、PSプリンタ以外のページプリンタもこのパターンが増えつつあるようです。

さらに先に進むと(近い将来の話)、XPSのままデータを受け取ってそれをハード側でレンダリングするなんていうのも検討されているようですが
ハード側で全部面倒見るのはごく一部の機種だけじゃないかと予想されます。

どう考えても普及機レベルでは、割に合いませんからね(^^;
_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-05-09 18:44
引用:

ラスタ系ラインプリンタは全部この実装です。
往年の機種でも、最新の機種でも、色数と解像度の違いがあるだけでやってることは一緒(まるっきり同じじゃありませんが)です。


そうでした。「ページプリンタの場合は」と前提条件を書くのを忘れていました ^^;
ページプリンタだとページレイアウトはプリンタ側でやってくれたりするけれど、ラスタプリンタ
などはその辺を全部プリンタドライバが面倒を見なくちゃいけないと。まぁ当たり前と言え
ば当たり前の話ですが。
ラスタプリンタ(のドライバ)がやっていることをページプリンタでやっているだけで、よく考える
とそんなに珍しいことでもないわけですもんね。
問題はプリンタドライバが用意されていないOSでは印刷すらできない、という話が(これ
もラスタプリンタも同じですけど)。

ラインプリンタと聞いて「ああ、モナリザの…」とか言い出したり、ハード側でレンダリングと
いう言葉からフォント専用に“本体より大容量の”ハードディスクを内蔵していた
LaserWriterを思い出したりする私はどう見てもおっさんです。本当にどうもありがとうご
ざいました _| ̄|○<マダ30ダイナノニ...

# って、スレと関係ない話題ですね...スイマセン
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-05-09 19:40
引用:

生データ(PNGデータ)のままプリンタにデータを転送することは出来ないのでしょうか?



生データといえば、PDFなら対応している機種があります。
http://www.fxpsc.co.jp/solution/solutions/solution06.html
http://www.express.nec.co.jp/products/laser/kinou/solution/index.html

引用:

仕様では、1つのジョブで100枚以上印刷する場合もあり、印刷をするのに時間がかかってしまい困っています。



PDFファイルに変換して、PDF対応プリンタにアップロードするとか。

深山
ベテラン
会議室デビュー日: 2006/05/09
投稿数: 66
お住まい・勤務地: 都内某所
投稿日時: 2006-05-09 20:58
囚人さん・ぽぴ王子さん・とっちゃんさん・todoさん
返信ありがとうございます。

引用:
PDFファイルに変換して、PDF対応プリンタにアップロードするとか。


totoさんのPDF変換してアップロードするという案はとても魅力的です。
しかし、今回の仕様では、特定のプリンタに出力するのではなく、いくつかのプリンタに出力する可能性があるため、PDF未対応のプリンタの可能性があるため出来ません。
非常に残念です。orz


引用:
# って、スレと関係ない話題ですね...スイマセン


いやいや、皆さんの発言は、若輩者の私にはためになる話ばかりでした。
皆さんの知識の豊富さに、精進しなくてはと刺激を受けるばかりです。

今後、つまらない壁に立ち止まるがある(既に壁が見えているような気が )と思いますが、皆さん救いの手をさし伸ばしてくれれば幸いです。

とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2006-05-09 22:40
既にまとめが...w

ええい!ずれたまま喰いついてしまえぇ!

引用:

ラインプリンタと聞いて「ああ、モナリザの…」とか言い出したり、ハード側でレンダリングと
いう言葉からフォント専用に“本体より大容量の”ハードディスクを内蔵していた
LaserWriterを思い出したりする私はどう見てもおっさんです。本当にどうもありがとうご
ざいました _| ̄|○<マダ30ダイナノニ...



え?30前なの?...いや、そこじゃなくて...

ありましたねぇ...巨大HDD内臓プリンタ...あ、字が違うw

ま当時のサイズでなので、今時だと USBや CF(Notマイクロドライブ)よりもずっと小さいわけですが(^^;


本題、本題(^^;
引用:

しかし、今回の仕様では、特定のプリンタに出力するのではなく、いくつかのプリンタに出力する可能性があるため、PDF未対応のプリンタの可能性があるため出来ません。
非常に残念です。orz


ターゲットプリンタは、不特定多数ですか?特定少数ですか?
たとえば、ターゲットがPSプリンタのみ(機種問わず)というのであれば、PDF対応はなくても代替手段はあるかもしれません。

不特定多数という場合はあきらめるしかないかもしれませんが...

あとは、チラッと書いたXPS対応のみというのも1年以上先のプロジェクトならありかも...
まだ全貌が出ていない(なにせ、β2前ですしね...)のでこっちはなんともいえませんが(^^;
_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
深山
ベテラン
会議室デビュー日: 2006/05/09
投稿数: 66
お住まい・勤務地: 都内某所
投稿日時: 2006-05-10 09:42
とっちゃんさん返信ありがとうございます。m(__)m

引用:
ええい!ずれたまま喰いついてしまえぇ!


いくらでも喰いついてください。

引用:
え?30前なの?...いや、そこじゃなくて...


実は、20代前半です。
しかし、30代が一番脂がのってうまい時期だと思うのですが!!(マグロみたいな例えはどうかと思いますが...w )
私としては、30代に早くなりたいですね

で、本題ですが、
引用:
ターゲットプリンタは、不特定多数ですか?特定少数ですか?
たとえば、ターゲットがPSプリンタのみ(機種問わず)というのであれば、PDF対応はなくても代替手段はあるかもしれません。


今回は、残念なことに不特定多数になります。

引用:
あとは、チラッと書いたXPS対応のみというのも1年以上先のプロジェクトならありかも...
まだ全貌が出ていない(なにせ、β2前ですしね...)のでこっちはなんともいえませんが(^^;


XPS対応のみというのも、1年も待っていられない状況です。

今回は
引用:
で本題ですが、大量の印刷を行なうことを想定しているのであれば、まずは%TEMP%の存在するドライブの空き容量を大きくして、デフラグしてみてください。


で改善出来るとのことなので、この方法で逃げようと思います。

しかし、後学のために特定少数の場合の代替手段をご存知の場合、ご教授して頂けないでしょうか?
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-05-10 11:19
ええい!ずれたまま喰いつかれてしまえぇ!

引用:
え?30前なの?...いや、そこじゃなくて...

ありましたねぇ...巨大HDD内臓プリンタ...あ、字が違うw

ま当時のサイズでなので、今時だと USBや CF(Notマイクロドライブ)よりもずっと小さいわけですが(^^;


それはHDDの物理容積のことでは…5インチフルハイトHDDなんてものも触ってた
ので、最近のHDDの小ささはびっくりするばかりですけどね。100円玉ぐらいとか。
というか LaserWriter の伝説的なところは Mac 本体よりも高性能な MPU を積んで
いたことだった気がしてなんか記憶が薄れていくのを実感する今日この頃です。本体は
68020 が主流だったころに LaserWriter は 68040 を積んでいたとか。
下手なことを言うと大阪で生まれた女、じゃないボロが出そうなのでこの辺にしておきます。
ちなみに30ダイ=30代ということで、30半ばです

結局のところ、印刷速度を改善する方法については解答できていませんが
これまた役に立たない知識かもしれないですが(トリビアかい)、むかーしキヤノンのページ
プリンタで(たぶん他機種にもあったと思う)レイヤというものがあって、定型の罫線などを
印刷データとは別にプリンタに設定させ、差し込み印刷のようなことを実現するという方
法がありました。もっとも、そのために Windows のプリンタドライバを経由せずに直接プ
リンタへ制御コードを送りつけていた記憶が。
だからネットワークプリンタでは使えないかもしれませんし、プリンタも選ぶし、画像データ
の印刷じゃ意味がなかったりするわけですが。あぁなんか役立たずだ。

スキルアップ/キャリアアップ(JOB@IT)