2008年9月 1日

[openoffice:11298] Re: Q: Impress 複数部数の印刷

すみません。とっても、長いです。。。

ane wrote:
> 姉崎です。
>
> toraさん、試してみました。

ありがとうございます。

お手間を取らせてしまって、すみません。

> 日付: 2008/08/28 18:35, tora - Takamichi Akiyama さんは書きました: [openoffice:11282]
>> 以下のお使いの環境において、
>> ・Windows XP
>> ・OpenOffice.org 3.0 beta2
>> ・DocuCentre-II C4300
>> http://www.fujixerox.co.jp/product/dc2_c4300/index.html
>>
>> 1. 3ページものの Writer のドキュメントを用意する。
>> 2. 「ファイル」「印刷」
>> 3. 〔プロパティ〕ボタンを押し、「両面」印刷するように設定し、
>>  こちらのダイアログでは「部数」に触れずに「1」のままとし、OK。
>> 4. 戻ってきた「印刷」ダイアログにて、「部数」を 2 として設定する。
>> 5. さらに「部単位で印刷」にチェックを付けて、OK
>>
>> すると、どうなるでしょうか。

OpenOffice.org の「ファイル」「印刷」メニューで表示される
「印刷」ダイアログにて「部数」「部単位で印刷」を設定すると、

>> (a) 期待通り
>>  1枚目の用紙: 表に1ページ目 裏に2ページ目
>>  2枚目の用紙: 表に3ページ目 裏は白紙
>>  3枚目の用紙: 表に1ページ目 裏に2ページ目
>>  4枚目の用紙: 表に3ページ目 裏は白紙

> 一応、この形になりますが、

> 2部、一緒にホッチキスされます。

ということになると。。。とほほ。

> 6/3という表記が出ましたから、6ページ分のデータを作成してプリンタに送る仕様は
> 変わっていないようです。

はい。ソースコードをよくよく見てみると、OpenOffice.org が自分で
頑張らなくちゃと、for ループさせて、部数分の複数のページを生成し
出力しているようです。

OpenOffice.org 3.0 beta2 では、
>> (a) 期待通り
になるようです。

OpenOffice.org 2.4.x では、
> (b) 期待はずれ
>>  1枚目の用紙: 表に1ページ目 裏に2ページ目
>>  2枚目の用紙: 表に3ページ目 裏に1ページ目
>>  3枚目の用紙: 表に2ページ目 裏に3ページ目
になっていたのではないかと思います。

3.0 beta2 のソースコードでは、2.4.x に対して、for ループから抜けた後に、
「ここで一旦終わりだよ」を通知するようなコードが追加されているようです。

> 再度、Impressで試してみましたが、
> こちらも今度は2部、一緒にホッチキスされ、改善していなかったようです。

につきましては、後述のように、1部終わる毎に EndDoc の指示が適宜必要なのでは
ないかと思いました。


そもそもの解決方法は、現時点での私案ですが、

・OpenOffice.org がしゃしゃり出てきて自身で部数分のページを生成するので
 はなく、プリンタドライバを信頼して、プリンタドライバへよろしくお願い
 するのがよいのではないかと思います。

・しかしながら、FAXと一体型になった廉価なプリンタなどでは、PCはそのプリンタ
 へ、FAXの「ぴぃーひゃらららきぃー」と同等なデータを作成し、FAXへ送りつける
 ことによって印刷を行っていたりします。ですので、プリンタドライバもしくは
 アプリケーションのどちらかが、部数分の複数のデータを生成しなくてはなり
 ません。

・OpenOffice.org の前身である StarOffice 5.2 の頃から、印刷周りについては
 あまり変化していないのではないかと思います。

・その当時 1990年代 では、アプリケーションが、部数分のデータを生成するという
 ような慣わしだったのかもしれません。

・現在 2008 年においては、プリンタドライバが部数分のデータを生成するという
 役割分担を行うのが当たり前になっているのではないかなぁと捉えています。

・すると、やはり、OpenOffice.org が自前で頑張って部数分のデータを生成する
 ような現行の機能については、いっそのこと、ズバッと削除してしまうか、動作
 しないようにしてしまって、プリンタドライバ側にすべてお任せする。というのが
 スマートなような気がいたします。

・というわけで、Windows 版においては、OpenOffice.org の「ファイル」「印刷」
 メニューで表示される「印刷」ダイアログから現行の「部数」「部単位で印刷」を
 削除し、さらに、〔プロパティ〕という何やら押してはまずいのではないかと
 初心者をまどわす表記を〔詳細設定〕などというような押してみたくなるような
 表記へ字面を改め、プリンタドライバ側の設定画面にて、「部数」や「部単位で印刷」
 の設定を行うようにしてしまえばよいのではないかと思います。

・先日、小笠原さんから頂戴しておりますコメント、お返事していなくて、
 すみませんでした。

Naruhiko Ogasawara wrote:
> キーワードとして DEVMODE.dmFields, DEVMODE.dmCollate といった言葉を投げ
> 込んでおきます。
> http://msdn.microsoft.com/en-us/library/ms535771.aspx

・はい。OpenOffice.org のソースコード内にて、それらの値を設定するコードも
 かかれているのですが、そのコード部分に来る前に、if 文での判断で、プリンタ
 ドライバへお願いするのではなく、自分でやるんだと。そして、それらの値に
 ついては、OpenOffice.org の「ファイル」「印刷」メニューで表示される「印刷」
 ダイアログの「部数」にてどんなに大きな数値が指定されても、dmCopies あるいは
 dmCollate には 1 を設定してしまっているようなのです。そしておいて、自分で
 複数の部数分を生成し、プリンタドライバへ送っているようです。

> なお user experience の観点では、大抵のユーザはプリンタドライバの画面と
> いうもの
> の存在を知らないので、「ドライバの画面にあるからアプリの設定画面にはいら
> ない」は、
> 多くのユーザの幸福から遠ざかる道であるということを付記しておきます。

・そのご意見の状況につきましては、上述いたしました方法で回避できるのではないかと
 私は考えております。そもそも、設定項目が無ければ、どっかにあるだろうと。
 あっ、〔詳細設定〕というボタンがある。押してみよう!。あった、あったと。

・それ以前の問題として、以下の姉崎さんからのご報告にありますように、

ane wrote:
> 問い合わせた富士ゼロックスのサポートの方がOOoをダウンロードして試してくれました。
>  ★富士ゼロックスさん、すばらしい!
>
> その結果、
> ・手順2のOOoの印刷ダイアログで部数を指定しない。
> ・手順4のドライバのダイアログで部数を指定する。
> で希望通り、部ごとにホッチキスできました。

 というのは、OpenOffice.org 内部では、CreateDC で上記の DEVMODE に、
 手順2の結果、dmCopies もしくは dmCollate に 1 を設定しているにも係わらず、
 手順4のように、プリンタドライバは、手順2の結果として指定された dmCopies などを
 無視して、自身のダイアログ上にて指定さたれ部数の値を使っているということに
 なるのではないかと。
http://msdn.microsoft.com/ja-jp/library/cc428339.aspx

 つまり、プリンタドライバによっては、アプリケーションが CreateDC 経由で指示した
 値よりも、自身のダイアログ上で設定された値の方を優先する。ってことも、もちろん
 あってもいいわけですよね。ならば、いっそのこと、アプリケーションである OpenOffice.org
 は、CreateDC 経由でそれらの値を指示しない。つまりは、OpenOffice.org のダイアログ
 上には「部数」や「部単位で印刷」などの設定項目は不要。ということでよいのではない
 かなぁ。と思う次第であります。

> 2部、一緒にホッチキスされます。

・につきましては、StartDoc, StartPage, EndPage, EndDoc, あたりを、しっかりと
 省略せずに OpenOffice.org が指示すればよいのかなぁ。とも思います。
http://msdn.microsoft.com/ja-jp/library/cc428765.aspx

・「Windows 用デバッグ ツール」の Logger で、OpenOffice.org がどのようなシステムコール
 (CreateDC や EndPage など)を Windows に対して指示しているかを記録し、後ほど同ツールの
 LogViewer にて、それらのシステムコールの履歴を時間順に表示させてみると、StartDoc や
 EndPage などのつりあいがうまく取れていないように感じられます。素人的な私の感覚では、
  StartDoc
StartPage
EndPage
StartPage
EndPage
StartPage
EndPage
EndDoc
 のような順で指示が出されるべきではないかと考えてしまいますが、実際の OpenOffice.org 2.3
 の挙動を見ていますと、StartDoc が無いのに、いきなり、StartPage が出てきています。
http://www.microsoft.com/japan/whdc/DevTools/Debugging/default.mspx

・複数の部数を OpenOffice.org 自身で複製して生成し、それでいて、ホッチキスを適切な
 タイミングでプリンタに行わせるには、EndDoc を指示するのがよいのではないかと思います。
 現行では、StartPage, EndPage, StartPage, EndPage, StartPage, EndPage, ... と繰り返し
 てしまっているので、プリンタ側(プリンタドライバ側)が、ホッチキスのタイミングを
 知りえないという状況になっているのではないかと思います。

・まぁ、つまるところ、そもそも、OpenOffice.org 自身が自分で部数分の複製を作るという
 こと自体をあっさりとやめてしまって、その仕事についてはプリンタドライバ側に一任する
 というように機能変更してしまえば、悩むこともなくなるのかなぁ。とも思います。


関連する OpenOffice.org のソースコード

・「ファイル」「印刷」メニューで表示される「印刷」ダイアログ
svtools/source/dialogs/printdlg.cxx
http://framework.openoffice.org/source/browse/util/svtools/source/dialogs/printdlg.cxx

・印刷関連のプラットホーム非依存なコード
 vcl/inc/vcl/print.hxx
 vcl/inc/vcl/impprn.hxx
 vcl/source/gdi/print.cxx
 vcl/source/gdi/impprn.cxx
http://gsl.openoffice.org/source/browse/gsl/vcl/source/gdi/

・印刷関連の Windows 向けのコード
 vcl/win/source/gdi/salprn.cxx
http://gsl.openoffice.org/source/browse/gsl/vcl/win/source/gdi/

Tora


【MLコミュホームページ http://www.freeml.com/openoffice

--[PR]------------------------------------------------------------------
■□ 「ウコンの力」でおなじみのハウス食品が自信を持ってお届け!! □■
□■      『ハウスの天然効果(R)活性ウコン』         ■□
 
  ※通常価格2,000円(約30日分)⇒今なら半額の1,000円(税込・送料込)
http://ad.freeml.com/cgi-bin/sa.cgi?id=c0YUQ
------------------------------------------------------------------[PR]--
■GMO INTERNET GROUP■ GMO INTERNET www.gmo.jp


投稿者 xml-rpc : 2008年9月 1日 14:30
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/76899
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。