[リストへもどる]
一括表示

投稿時間:2003/02/07(Fri) 01:46
投稿者名: clipclap
Eメール:
URL :
タイトル:
word文書をCopyAsPictureで
はじめまして。
win98 VB6 office2000 の環境です。

wordの縦書文書を、拡張メタファイルにすることを試みております。
指定文書を
.Content.WholeStory
.Content.CopyAsPicture
で、クリップボードに収納後、
Clipboard.GetData(vbCFMtafaile)
で、拡張メタファイルとして取得しようとすると、
複数ページの文書のうち、1ページ目だけがメタファイル化されます。

複数ページ文書を、この方法でメタファイル化するのは無理なのでしょうか?

投稿時間:2003/02/07(Fri) 15:14
投稿者名:k.k
Eメール:gtk2k@hotmail.com
URL :
タイトル:
Re: word文書をCopyAsPictureで
> Clipboard.GetData(vbCFMtafaile)
うち間違得たのかな?
拡張メタファイルの場合はvbCFEMetafileですよね。
これだとメタファイルになってしまう。
私は、メタファイルの表示方法をloadpictureでしか知らないので、
プログラム上でのアドバイスはできませんが、ひとつ
別の方法でなら何とかなるかと思います。
コントロールパネルで、「プリンタ」を起動し、印刷を行うプリンタを右クリックして
プロパティを選択します。
プロパティウィンドウが表示されたら、詳細設定タブの
”印刷ドキュメントを巣プールし、プログラムの印刷処理を高速に行う。”

”全ページ分のデータを巣プールしてから、印刷データをプリンタに送る。”
にチェックを入れます。
そして、「プリントプロセッサ」ボタンを押すとウィンドウが表示されるので、
そのウィンドウの中の「規定のデータ型」の中から"NT EMF x.xx"
を選択してください。
これはウィンドウズ2000での話です。98などはプロパティウィンドウの形式が
違いますのでちょっと違いますが、データ型を設定するところはありますので、
見つけてください。
あと、プリンタをオフラインに設定します。しかし、これはネットワーク上の
プリンタの場合だけで、プリンタがパソコンに接続されている場合はこの設定項目
がありません。しかし、API関数を使用してこの設定を行うと、パソコンと直接
つながっているプリンタであってもオフラインに設定できます。
オフラインに設定することにより、プリンタにデータを送信してしまうのを防ぎます。
これで、後は印刷を行うだけでEMFファイルはできます。
EMFファイルができる場所ですが、
WinNT\System32\spool\printers
(98系ではこれに該当するフォルダ)
だったと思います。
ファイル名は機械的に作成されたもので、拡張子が確か.tmpだったと思います。
印刷を行ったら、このフォルダにできたファイルを調べればいいでしょう。
ページごとに出力されますのでとりあえずは問題はクリアします。
しかし、ジョブは残ったままになりますので、手動で消すなり、API関数を駆使して
自動で消すなりしてください。
とまあ、あいまいな形で申し訳ございません。
私も、2年前にこのようなツールを作成していました。
ファイルをドラッグアンドドロップし、変換ボタンを押したらビットマップに変換されるというものです。
ビットマップに変換といってますが、出力されたEMFファイルを変換したものです。

いかんせんソースがもう手元にないのでこのようなあいまいな形となってしまいました。
すいません。

あと、プリンタによってはデータ形式が"RAW"のみの場合もあり、EMF出力ができないものもあります。それと、"WMF"というのもあり、これは単なるメタファイルで、API関数を使用して
拡張メタファイルに変換することができます。

投稿時間:2003/02/08(Sat) 00:41
投稿者名: clipclap
Eメール:
URL :
タイトル:
Re^2: word文書をCopyAsPictureで
k.k さま ありがとうございます。

壁にあたって、コチコチになった後、
どなたかに御相談申し上げて、発想自体別の方法を示して戴けると
感激というより、感動を覚えます。

週末に、いままで苦手意識で避けていた、winspool.drv の中味と
格闘してみます。

ところで、 win2000 、使ったこと無いので、もうひとつ御質問させていただいても
よろしいでしょうか?。。。
プリンタのジョブ消すのって、権限の問題が生じますか?
もしそうなら、コンパイルしたexe自体に権限設定できるのですか?
それとも exeを立ち上げた人のユーザー権限?
良くわからずに訊いています。すみません。

> > Clipboard.GetData(vbCFMtafaile)
> うち間違得たのかな?
> 拡張メタファイルの場合はvbCFEMetafileですよね。
> これだとメタファイルになってしまう。

'タイポ。ハズカシ。
'ネット用マシンにはlinux使ってるので、コピペできず打ち込みしたらこのありさま。