鈴の音情報局blog

携帯関連の将来や最新の技術情報や業界の行く末などを適当に綴るblogです。 内容の信憑性は?余り信じない方がいいと思います。
本家の鈴の音情報局はこちら→http://suzusuzu.dip.jp:8800/
スマホ・携帯端末アクセス[ランキング][アクセスシェア(グラフ)] (毎年10/1にログをクリア)

Android OSでプリンターを使おうとすると色々困ったことが起こりましたが、メジャーな対応プリンターなら意外と使えることも

Mopria製プリンタのAndroid向け接続アプリ「Mopria Print Service」が共有メニューからの印刷、印刷品質の選択、ページ集約印刷、Android 7.0に対応 ~ juggly.cn
Mopria 製プリンタの Android 向け接続アプリ「Mopria Print Service」が v2.1.10 にアップデートされました。様々な新機能が追加されました。
今回のアップデートでは、サードパーティ製アプリの共有メニューからの印刷に対応し、以前よりも手軽に文書の印刷が可能になりました。

Androidの端末からプリントアウトの機能を利用することは余りありませんでしたが、
最近ちょっといろいろやってみています。

しかし使っている人が少ないからか、まだまだ不便だしきちんと刷れないことも有ります。



これはとあるPDFを刷った時の出力結果。
タイムスケジュールのPDFを刷ったのですが、見事に文字がバケラッタしています。

これはcanonのプリンタ向けのCanon Print Serviceでも、Canon PRINT Inkjet/SELPHYでも
起こるので、単純にフォントの指定が問題なのかもしれません。

ちなみに特定の方が作ったPDFだけがこんな状況になり、私が今使っているVAIOにプリインストール
されていたWordを使って同じフォントを指定してPDFを作成してもこんな崩れ方はしないので、理由が
よく分かりません。当該PDFはWindows上では普通に印刷も表示も普通に出来るので、なんだか
よく理由は分からないです。


ただ年賀状プリントなどのアプリは大量にあり、スマホを使ってのプリンターの利用は既に一部では
ポピュラーなことになっていようです。アプリのダウンロード数も500万~1000万や1000万越えという
ものもあり、既にニッチとは言えなくなっています。

色々見ていると、Android端末とプリンタだけで相当なことが出来そうなことが徐々に見えてきました。


しかしよくよく見ていくと、各アプリごとに対応プリンタが決まっています。
またメーカー毎に似たようなアプリが有り、それぞれに対応プリンタも決まっています。
年賀状プリントなんて各メーカーが自社のプリンター向けにそれぞれのアプリを出している状況。
勿論相互に利用は不可能です。画像ファイルに落としてすれば相互利用もできるのかもしれませんが、
そんな面倒なことはいちいちしないでしょう。

つまりアプリが直接プリンタにデータを送っており、Windows等のPCのようにツール&ドライバと
いう関係はなく、個々のアプリにドライバーの的な部分まで含まれているようです。
現状では自分のプリンタに対応するアプリを立ち上げ、そのアプリにネットワークアクセスできる
プリンターのIPアドレスを指定する(自動検索できるものも有る)のがメジャーなやり方のようです。
Bluetooth等で接続できるプリンターが有ったりしますが、接続は出来ても何もプリントアウト
することが出来ませんでした。それに対応するアプリが見当たらなかったのでそこで詰みました。

もっと中身を見ていくと本来のプリンタードライバーはLinuxカーネル側にあるので正味のドライバーは
必要ないのですが、アプリが出力するプリンターを選ぶので、それなりに融通が利かず不便な環境です。
やっぱりこの辺り、Windows等のPCにはかなわないですね。
でもWindowsタブレットはどうなっているのでしょうね。

どちらにしろAndroidタブやスマホにはWindows PCのようにドライバーをユーザーに入れさせるわけ
にはいかないので、同じようには出来ないという問題が有るのが悩ましい所です。


各出力アプリがメーカー毎にバラバラに別れ、似たようなアプリが相互に利用できないのはかなり
もったいないなと感じています。プリントサービスのアプリがドライバー代わりかなと思っていたら、
全然そんなことはなさそうな感じです。

単に用紙を決めたりプリント方向を選択させるだけだったり、確かにプリントサービスですねとしか
言いようがない内容で、各アプリがそれを利用せずパスして直接プリンターにアクセスしているわけです。

メジャーなプリンターの場合、各アプリがことごとく対応していてとても便利です。
その場合はPCを使っている時のように過不足なく色々できます。
対応は高価格なプリンターというよりも、量産型の売れ筋のメジャーなプリンターの方が対応率が高く、
何をやるのもPC並みに便利に使えます。でもいったん非対応機になると、何もできないぐらい対応して
おらずとても困ったことになります。


Androidの世界でのプリンターの扱いはまだまだこなれているとは言えないです。
メーカーがそれぞれのプリンター向けに専用アプリを作ってこなしているような段階で、メーカー内共通や、
全メーカーを通しての共通プロトコルなどは夢のまた夢状態のように思います。

変にOSが重くなられても困りますけど、しかしながらこんなバラバラ状態も何か今一物足りない。
取り敢えずこの状況ではまだAndroidタブレットではPCと入れ替えは無理だなとは感じています。

なにせ現状アプリがプリンターに対応していなければ何の印刷もできない状況です。
今まで印刷出来ていても、最新のプリンターに買い替えたら今使っているアプリが対応して
いないので全て使えなくなるとか、このままでは普通にあると思います。

将来的にはAndroid OSにChrome OSを統合してAndroidのPC版になると思われるAndromeda OSで、
その辺りの扱いがどうなるかも気になる所です。Windows PCのようにユーザーにドライバーを入れ
させることが出来ないと思われますので、そこで全てが止まってしまうのです。
多分今プリントサービスとして入れているアプリをドライバー代わりにするのではという気がします。


Nexus 9をちょっとだけPCライクに使おうとして、色々試していたらプリントアウトの所で思いのほか
便利な所と不便な所を見つけたので記事にしてみました。

現状のAndroid OS上のプリンターの扱いは、DOS時代の「各ワープロなどが対応プリンターを決めていた」
時代ほぼそのまんまという気がします。各メーカーのプリンタ向けアプリを見てもらえてば分かると
思いますが、対応機種がずらずらとDOSの頃のように懐かしく書かれているような状況です。

その様子を見て何十年前の一太郎の時代に戻ったかのような錯覚に囚われました。
でもこのまんまが決していいとは私は思わないですけどね。
出来たらOSとしてきちんと対応し、改善してほしいなと思います。

関連記事
  1. 2016/12/31(土) 04:48:06|
  2. 携帯
  3. | トラックバック:0
  4. | コメント:13
<<あけましてアップル、AirPodsの品薄商法は終了で普通生産に入った模様 | ホーム | Android OSに感染し、WiFiルーターを攻撃するマルウェアSwitcher>>

コメント

 憶測ですが、PDFビューワーアプリを変えると改善すると思います。(プリンタ対応がネックですが)
  1. URL |
  2. 2016/12/31(土) 15:36:58 |
  3. ろむ #-
  4. [ 編集]

>ろむさん
PDFの閲覧自体は特に問題ありません。
それをAndroid端末でプリントアウトしようとした時に問題が起きているのです。
年賀状など、よくある要求以外ではかなり対応が薄いなというのが今回の件で感じられました。
  1. URL |
  2. 2016/12/31(土) 21:46:04 |
  3. #GpEwlVdw
  4. [ 編集]

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
  1. |
  2. 2017/01/01(日) 11:07:50 |
  3. #
  4. [ 編集]

印刷ドライバモデル

Winのプリンタドライバはクラスドライバが画像イメージでしか受け付けないはずなので
ワープロとかブラウザとか何らかのビューワがデータを展開して
イメージでクラスドライバ(MS提供)へ渡しているはずです、
なので「文字化けする場合は印刷処理をかけるアプリ(ワープロアプリorビューワアプリ)に問題がある」
という構造です、
印刷イメージがクラスドライバから固有ドライバ(プリンタメーカ提供)へわたされ、
固有ドライバが印刷イメージをプリンタネイティブデータに変換(ついでに画質も調整)して
プリンタへ送出となります
この構造自体はWin3.1の頃から変わってないはず(API仕様とかは変わってるだろうけど)
タブレットとか筐体の違いはないのでAT互換機系の通常PCならこの構造です

ネットワーク共有すると固有ドライバはプリンタサーバで保有してるので、
Win10MobileやWM/WPでも共有プリンタからは自由に印刷できるとおもわれます
  1. URL |
  2. 2017/01/01(日) 20:25:18 |
  3. 姫 #Qgp/yXvw
  4. [ 編集]

>2017/01/01(日) 11:07:50
データの取り回しに関して恐らくそういうことだと思います。
ただ該当するフォントが無い場合、デフォルトフォントを呼び出してくれれば・・・って思うのですけどねぇ。
Viewerでは見れるものが有るので、そのViewerではそう処理しているのだと思っています。


>姫さん
>Winのプリンタドライバはクラスドライバが画像イメージでしか受け付けないはずなので
これマジですか!?
私はてっきりクラスドライバにはスクリプト状のデータをぶち込めるものだと思っていました。
で、ファンクションドライバにもスクリプトのまま送られるという認識です。
例えばHP-PCLやPostScript等、クラスドライバーをそのまま通過できるという感じで・・・。
違うことを言ってるのかなぁ・・・プリンターってよくわかんないです(;´・ω・)
まあ画像イメージと言っても、フォントだとラスタデータも有れば、アウトラインデータも有るので、この辺りもちょっとややこしい。
フォントのバケラッタは実際処理する段で割り当てられたフォントが見つからず、デフォルトフォントが割り当てられていないことが
理由かなと思っていました。その説明だと、アプリ側のこの辺りの処理がタコって事なんでしょうかね。
  1. URL |
  2. 2017/01/02(月) 03:08:53 |
  3. #GpEwlVdw
  4. [ 編集]

>>>Winのプリンタドライバはクラスドライバが画像イメージでしか受け付けないはずなので
>これマジですか!?
ご存じなかったのは意外でした。

たしかにドライバを入れさせるわけにはいきませんね。
Winのプリンタドライバは一部を除き、ドライバでラスターデータ化して出力するため、ドライバのウェイトが大きくかかってきます。
PSプリンタはアプリのPS制御文でなんとかなるとしても、どうにも難しい問題ですね。
プリンタのコルセンやっていたので、ある程度は知識があります。
知ってる限り、PSプリンタ以外は全部ドライバレベルでラスター化させています。
そしてその命令系統を全部をひっくるめてLIPSやらPCLなどのドライバとしてパッケージングされています。
PSプリンタ(大抵は他のドライバも併用)は規格化されているので、OSレベルで実装すればプリンタポートの指定だけでPSプリンタの全機能を使えます。

各プリンタメーカーが機種ごとの「プリンタアプリ(ドライバではない)」を作り、そっちにデータを引き渡す方法であれば解決は可能かと。
実際にやるか・できるかは別として。
表示されている画面のデータをスプールさせ、プリンタアプリに引渡し、プリンタが対応する命令文へ書き換えてプリンタに送信する。
あるいはメーカーごとの共通命令文をプリンタに組み込み、オープン規格として使う。ただし新機能や機種依存の動作は規格外としてサポートされなくなりますが。
  1. URL |
  2. 2017/01/02(月) 18:27:04 |
  3. 7SUXEN #22s72cIM
  4. [ 編集]

>7SUXENさん
え?
ドライバーでラスタ化させるってことは、クラスドライバーはアウトラインやテキストなどで受け取り、または通過しているって事ではないのですか?
待ち行列のプリントアウトジョブを見ていると、ファイルサイズがどうもイメージ化前のテキストとしか思えない状態のものが少なくないのです。

Androidのプリンタドライバの件は、やっぱりプリンタごとのプリンタアプリをドライバー代わりに持つ方式に落ち着きそうですね。
その方法でいいので、綺麗に実装してもらいたいなと思います。
  1. URL |
  2. 2017/01/03(火) 00:21:34 |
  3. #GpEwlVdw
  4. [ 編集]

ドライバレベルでの詳しいことは(大して興味がないので)わかりませんけど、WYSIWYG(ウィジウィグ)というものがあります。
Win95あたりからずっとあったもので、ファイルのイメージを画面表示に近づける技術です。
WYSIWYGがアプリとの連携、アプリのレンダリング機能をリンク、またはグラフィックドライバ(の表示機能)を通して再現するAPIであるなら、
ドライバレベルでアプリごとのレンダリングエンジンを持つ必要もありません。
レンダリング結果の受け取りだけ(その後プリンタに送る)すればいいのです。
スプーラの表示はレンダリングの前段階でしょう。その先の「プリンタに送る実際のデータ量」とは少ない方向で違うはずです。
糞遅いパラレルポート時代のプリンタで、データ量が少なくてもプリンタがPCからのデータを待っているシーンをよく見ました。

大して興味もない私に概要だけでも教えていただけるなら助かります。>どなたか

ちなみに、パラレル(並列転送)技術は発想こそ効率的ですばらしいものでしたが、
高速化すると問題が発生したため、シリアルポートの技術が台頭を始めました。
具体的には100m競走で8人が一斉にヨーイドンして、指定したタイム以内(たとえば12秒)で締め切る。
電子の伝送経路長や電気抵抗により、一人でも締め切りに間に合わないと仕切りなおし。
これがまるまるロスになります。
このロスが多くなると、結局仕切りなおしが増えて処理が進まない。
周波数はこの「締め切り」の短さ(数値が高いほど締め切りが短い)です。
12秒で締め切ったのが11秒、10秒、9秒と短くするほど伝送成功の条件が厳しくなり、伝送成功率が低下します。
伝送開始>失敗>伝送開始>失敗>伝送開始>成功>伝送開始失敗・・・と、周波数が高くなると失敗が増えるのです。
なので、締め切りの制御が簡易なシリアル(単一経路)伝送が失敗の減少で結局速くなり、USBのようなシリアル技術ばかりが進歩しているのです。

量子コンピュータというのも、同様の問題は想定されます。
量子学の特徴は「観測するまでの間は可能性のまま存在する」ですので、観測(演算を確定)すると他の演算結果・可能性は揮発または再度観測する必要が発生してしまうことです。
量子的多宇宙解釈では、私も複数存在しています。存在する可能性のひとつ(かつ存在が確定した)として、私が存在しています。
宇宙自体が並列で複数(それこぞ無量大数の桁ですらも足りないくらい)存在していて、複数ある中で確定したのが今。
他の宇宙は「存在する可能性」のままでいるということです。量子学の難しいのはそこなんですけど。
並列の限界と単列の限界は別々にあり、その限界を超えられるなら並列のほうが遥かに演算としては優れています。
その限界をどう超えるかが課題ではありますが。
並列の限界は「足並みを揃えるのが難しい」こと。
単列の限界は「物理的速度が枷」となること。
並列の「物理的速度の限界でも足並み揃え」が実現すれば、単列よりも倍々で速度が高まります。
  1. URL |
  2. 2017/01/03(火) 07:19:17 |
  3. 7SUXEN #22s72cIM
  4. [ 編集]

> WYSIWYG(ウィジウィグ)というものがあります。
> Win95あたりからずっとあったもので、ファイルのイメージを画面表示に近づける技術です。

WYSIWYG は思想であって技術ではないです (その手の技術の総称という事は有りますが)。
単に「画面に見えている物は印刷物として得られる物だ (What you see is what you get)」
と言う事で、Macが当初目指していた物ですね。
# なので、ディスプレイの dpi が画面サイズに寄らず一定だったり、レンダリングをPC側で行う様になったり...
# 今は dpi 固定は無くなってしまいましたが、色再現がMacの方がやりやすかったりというのは有りますね。

ちなみに、Windows で WYSIWYG と言い出したのは Aldus PageMaker (Adobe に買収される前) が Windows 3.1 で発売になった辺りかな。
私が Windows を使う一番の理由が PageMaker を使う為という時代でした。

技術的には画面描写のAPIと印刷のAPIが共通で、別々に有るわけでは無いという事ですかね。
Win32 APIの場合、出力先のハンドラ(画面、プリンタなど)を取得した後、
GDI コマンドをハンドラに対して発行しますが、
出力先の解像度をAPI経由で得られるので、適切な演算を行う事により、画面と印刷物とを同じようにすることができます。
# プリンタの場合、XとYとで解像度が違うことがあるのでややこしいですが (^_^;
プリンタドライバは GDI コマンドを自分のコマンドに変換するなり、ラスターイメージで転送するなりしますが、
基本、あまりラスターイメージのみで転送というのは無かったように思います。
# 一時期、そう言うWindows専用のプリンタはありましたが。
矢張りラスターイメージでは転送しなければならいデータが不必要に大きくなりますからね。


> 量子コンピュータというのも、同様の問題は想定されます。

うーん、量子コンピュータと並列の問題とがちょっとミスマッチを起こしているような...

僕も表面上知っているだけですが、
量子コンピュータは量子の重ね合わせにより、
1量子ビットが0と1の状態を同時に表現し、
さらに量子のもつれを利用して複数量子ビットを組み合わせる事により、
n量子ビットを持つコンピュータなら、同時に2^n個の数値の組み合わせを持つことができるので、
例え RSA 4096 で有っても、理論上12量子ビット有れば1回の演算で答えが求められると言う事ですよね。

なので、もつれの状態にあれば、一塊と見なせるので並列問題は存在しないかと。

観測問題が問題になるのは、答えを観測することにより、答えが一つに収束してしまうので、
他の答えを得るためには再度演算を行わなくてはならないとの事だったかと思いましたが。
  1. URL |
  2. 2017/01/04(水) 03:47:32 |
  3. 生ぴーまん #bnistvpo
  4. [ 編集]

WYSIWYG、懐かしいですね~。
私はさべになる前のThe BASICでこれを知った気がします。
その雑誌の中の人には漢字TALKが出る前からのマカーもいましたしね~。

Windowsでは95辺りから言われだしましたけど、当初は掛け声だけで、
WYSIWYGな結果になっていなかったことが少なくなかったのも懐かしい出来事ですね。

今回の記事の大元の原因を考え直していくと、恐らくプリンターにテキストデータやコマンド類が素通りで届き、
指定されたフォント名が見つからなかった時のデフォルトフォントが8bit系のものが指定されている事が
問題の元凶なのだろうと思います。

海外で売るプリンタならそれでいいと思いますが、日本ではゴシックなり明朝なりをデフォルト指定
するようにしてもらいたいですね。(データ側での指定ミスに気付きにくくはなるけど・・・)
多分ドライバーの初期化部分などをちょろっと書き換えるだけで出来そうな気がします。
たったそれだけのことでこのようなバケラッタ事例の多くが解消されそうな気がするのですけどどうでしょうか。
  1. URL |
  2. 2017/01/04(水) 16:25:00 |
  3. #GpEwlVdw
  4. [ 編集]

Winになってからアプリケーションは出力先を意識しないでドライバが吸収してくれるので楽になりましたね。
自分は仕事でFortranでLIPS2(+?)のマニュアル見ながらプロッタ互換のドライバ的なものを作らされてました。
(ペンプロッタだと微妙に線の位置がずれるのがHP Designjet(A0)だと当然のようにずれないことに感動したり...
その後、自宅用に買ったhpのプリンタのインクカートリッジが黒だけDesignjetと同じで唖然としたこともw)

Winなドライバになってから当時のLIPS3とかESC Pageとは構造が変わっているのかな?

WYSIWYG...MSXでHALNOTE使いましたが8Bitなので遅かったけど、それなりに遊べましたね。

>漢字TALKが出る前
それなんてSweetJAM?ひょっとするとLisa予約してた人だったりして

シリアルの高速化は、低電圧で動作するデバイスが製造できるようになったこともあるのでしょうね。

デフォルトフォントを置換してくれるなら良いけど...
M$Wordで作ったhtml文書みたいに大量のM$フォント指定とか思い出した。
  1. URL |
  2. 2017/01/05(木) 01:15:48 |
  3. Beep #-
  4. [ 編集]

WinでPostScript

印刷データをイメージでしか受け取らないのは
正確には"MSが提供する汎用プリンタドライバ(クラスドライバ)"のはずです…
クラスドライバも追加できますから
PS対応の汎用ドライバ+PSプリンタの固有ドライバをインストールすれば
WinでもPSで印刷できるはずです…(更にPSデータで印刷しようとするDTPソフトか印刷データをPS形式に変換する仮想ドライバもいります)

WinでPS関係を検索すると
1.DTPソフトからPSデータファイルの作成(PSプリンタがないのファイル出力でごまかし)とか
逆に
2.非PSプリンタをPS対応にするPSデコーダ(受け取ったPSデータを展開してイメージをUSB出力)とか
という情報がおおく、
ワード文書などを直接PSプリンタで印刷しよう(USB等でPSプリンタへPSデータを送信)
という情報がなかなかないので…

あたし自身もPSについてよくわからんですし…
PR201やESC/Pといったプリンタ共通コードの究極系がPSだと思われるので
プリンタにイメージデコーダを搭載するのはデコードミスの可能性から逃れられないとおもうのです
(どうせ搭載するなら組み込みWinを搭載してプリンタサーバとよべるものにしてデコーダやライブラリをアップデートできるようにするとか)
Winのイメージしか受け付けないという構造は力技ではあるもの、
かならず印刷プレビューとほぼ同じものが印刷されるという点で間違いではないとおもうのです
  1. URL |
  2. 2017/01/05(木) 02:04:14 |
  3. 姫 #Qgp/yXvw
  4. [ 編集]

> 鈴さん
> 海外で売るプリンタならそれでいいと思いますが、日本ではゴシックなり明朝なりをデフォルト指定
> するようにしてもらいたいですね。(データ側での指定ミスに気付きにくくはなるけど・・・)
> 多分ドライバーの初期化部分などをちょろっと書き換えるだけで出来そうな気がします。

これ、単にフォントの対応表の問題だと思います。
例えばPDF内部では「MS Pゴシック」とか指定されているけど、
その名前のフォントがプリンタドライバで認識出来ない場合、
代替フォントを使用することになりますが、
言語毎のデフォルトフォント対応表を作成しなければならないので、
日本語を明確に対応していない場合はちょっと厳しいかも知れませんね。
# 端末の実装によって搭載しているフォント名が違っている可能性もありますし。
と言う事は、ユーザが明示的にフォントの対応を指示できる仕組みが無いと、
ちゃんと印刷できないと言う事になりますね。


> 姫さん
> PR201やESC/Pといったプリンタ共通コードの究極系がPSだと思われるので

PostScript はESC/P とかのページ記述専用言語というよりも、
完全に汎用プログラミング言語ですね。
# とは言え、解像度に依存しない描写コマンドだとか、描写に特化したコマンド満載ですが。

Forth 言語のようなスタック指向の構文で 10 20 add とコマンドを発行すると 30 がスタックに積まれると言うような動きをします。

関数グラフを描写するプログラムを PostScript 言語で記述してプリンタに流してあげると、
グラフが印刷されるとか、いろいろ遊べます。
# 当然メモリもそれなりに搭載しています。
# PostScript プリンタが出始めの頃、プリンタがPCよりも搭載メモリ、HDD容量が大きかったりしましたし。
# フォント追加するために外付けHDDを付けたりとか。

ちなみに PDF は PostScript のエッセンスを引き継いでいるようです。

ついでに、拡張子が wmf または emf のファイルは GDI のコマンドをファイル化した物で、
中のコマンドが1:1にGDIコマンドに対応しています。
# wmf は 16bit Windowsの頃の物で、emf は 32bit Windows 用にコマンドが拡張されています。
  1. URL |
  2. 2017/01/05(木) 10:25:40 |
  3. 生ぴーまん #bnistvpo
  4. [ 編集]

コメントの投稿(投稿時には必ず何らかの名前を付けてください)


管理者にだけ表示を許可する

(名前を入れないとクリックできません)

トラックバック

トラックバックURLはこちら
http://suzunonejh.blog15.fc2.com/tb.php/7099-3cbab8b3
この記事にトラックバックする(FC2ブログユーザー)

最近の記事

機能リンク

最近のコメント

カテゴリー

ブログ内検索

ブログリンク

RSSフィード

QRコード

QR

月別アーカイブ



メールフォーム

お問い合わせ・ご質問はこちらから。

名前:
メール:
件名:
本文:

suzunone.m(あっと)gmail.com に
直メでもOKです。