C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: Adobe Readerアプリケーションが終了してないです。


(過去ログ 23 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■9751 / inTopicNo.1)  Adobe Readerアプリケーションが終了してないです。
  
□投稿者/ mxh (8回)-(2007/11/03(Sat) 21:27:50)

分類:[.NET 全般] 

2007/11/13(Tue) 12:54:24 編集(投稿者)

お世話になっております。
VB.netの開発中です。

印刷ボタンを押下後、先にPDFファイルを作成し、更に作成されたPDFファイルを印刷します。
今はPDFを印刷後、Adobe Readerアプリケーションが終了してないです。
※複数帳票を同時に作成、印刷する。

'サーバ上作成されたPDFファイルを取得する。
strFilePath ← フォルダパス
strFilename ← PDFファイル名
'フォルダ内のPDFファイルを印刷します。
Do While strFilename <> ""
Dim proc As ProcessStartInfo = New ProcessStartInfo
proc.FileName = strFilePath & strFilename
proc.Verb = "Print"
proc.CreateNoWindow = True
Dim p As Process = Process.Start(proc)
p.WaitForExit()

'プロセスが終了していなかったら終了する
If p.HasExited = False Then
p.Kill()
End If


'proc解放
If Not proc Is Nothing Then
p.Dispose()
End If
'印刷済みのファイルを削除する。
Kill(strFilePath & strFilename)
strFilename = Dir()
Loop

上記の通りにコードを書いておりますが。
ご指導の程宜しくお願い致します。





引用返信 編集キー/
■10352 / inTopicNo.2)  Re[1]: Adobe Readerアプリケーションが終了してないです。
□投稿者/ カンタービレ (60回)-(2007/11/16(Fri) 02:31:06)
【前回までのスレ】
http://bbs.wankuma.com/index.cgi?mode=al2&namber=8305&KLOG=21

まだ解決しなくて困ってるんデスね。。
ちなみに私はPDF.OCXを使って印刷した時はこんな感じでした。

Dim objAVApp As Acrobat.CAcroApp   = CType(CreateObject("AcroExch.App"), Acrobat.CAcroApp)
Dim objAVDoc As Acrobat.CAcroAVDoc = CType(CreateObject("AcroExch.AVDoc"), Acrobat.CAcroAVDoc)
Dim objPDDoc As Acrobat.CAcroPDDoc
objAVApp.Hide()

' //--- mxhサマのやりたいことだと、この辺をループ
    objAVDoc.Open(strFilePath & strFilename, "") 
    objPDDoc = CType(objAVDoc.GetPDDoc(), Acrobat.CAcroPDDoc)
    objAVDoc.PrintPagesSilent(0, objPDDoc.GetNumPages() - 1, 2, 1, 0)
    ' --- 私はここでプリンタのスプール状況を監視してマス ---

    objAVApp.CloseAllDocs()   ' PDFドキュメント閉じマス。Close(1)でもいいカモ。

' ---//

objAVApp.Exit()   ' アクロバットさんを閉じマス。

AcrobatReaderはオープン、印刷、クローズ時もエラー時に何かダイアログを出してユーザー入力を待つことがありマス。
これのせいで同じようにプロセスが終了せずに困った経験がありマス。
苦肉の策で、APIのGetLastActivePopupでアクロバットのポップアップ監視とかしてましたw


引用返信 編集キー/
■10358 / inTopicNo.3)  Re[2]: Adobe Readerアプリケーションが終了してないです。
□投稿者/ mxh (9回)-(2007/11/16(Fri) 10:21:01)
カンタービレ さん:

ご回答有難う御座います。
教えて頂いた方法でAdobe Acrobatがインストールされないと、だめですね。
私はAdobe Reader 8を利用していますが、
できますか?
ご指導宜しくお願い致します。

No10352 (カンタービレ さん) に返信
> 【前回までのスレ】
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=8305&KLOG=21
>
> まだ解決しなくて困ってるんデスね。。
> ちなみに私はPDF.OCXを使って印刷した時はこんな感じでした。
>
> Dim objAVApp As Acrobat.CAcroApp = CType(CreateObject("AcroExch.App"), Acrobat.CAcroApp)
> Dim objAVDoc As Acrobat.CAcroAVDoc = CType(CreateObject("AcroExch.AVDoc"), Acrobat.CAcroAVDoc)
> Dim objPDDoc As Acrobat.CAcroPDDoc
> objAVApp.Hide()
>
> ' //--- mxhサマのやりたいことだと、この辺をループ
> objAVDoc.Open(strFilePath & strFilename, "")
> objPDDoc = CType(objAVDoc.GetPDDoc(), Acrobat.CAcroPDDoc)
> objAVDoc.PrintPagesSilent(0, objPDDoc.GetNumPages() - 1, 2, 1, 0)
> ' --- 私はここでプリンタのスプール状況を監視してマス ---
>
> objAVApp.CloseAllDocs() ' PDFドキュメント閉じマス。Close(1)でもいいカモ。
>
> ' ---//
>
> objAVApp.Exit() ' アクロバットさんを閉じマス。
>
> AcrobatReaderはオープン、印刷、クローズ時もエラー時に何かダイアログを出してユーザー入力を待つことがありマス。
> これのせいで同じようにプロセスが終了せずに困った経験がありマス。
> 苦肉の策で、APIのGetLastActivePopupでアクロバットのポップアップ監視とかしてましたw
>
>
引用返信 編集キー/
■10363 / inTopicNo.4)  Re[3]: Adobe Readerアプリケーションが終了してないです。
□投稿者/ カンタービレ (63回)-(2007/11/16(Fri) 11:11:11)
No10358 (mxh さん) に返信
> カンタービレ さん:
>
> ご回答有難う御座います。
> 教えて頂いた方法でAdobe Acrobatがインストールされないと、だめですね。
> 私はAdobe Reader 8を利用していますが、
> できますか?

「Acrobat 7.0 / Adobe Reader 7.0 および Acrobat 8 / Adobe Reader 8 の場合: AcroPDF.dll を利用」http://support.adobe.co.jp/faq/qadoc/spitz.nsf/0/62c6c03d583f11eb49256c01000e8672?OpenDocument
私の書いたコードは6.0の頃のものデス。

読む限りは、AcroPDF.dllを使ってAdobe Reader 8がインストールされている条件では使えるんじゃないデスか?
後は8.0のSDKドキュメントなど参考にしてください。

引用返信 編集キー/
■10373 / inTopicNo.5)  Re[4]: Adobe Readerアプリケーションが終了してないです。
□投稿者/ mxh (10回)-(2007/11/16(Fri) 14:00:38)
カンタービレ さん:

有難う御座います。
すみません、初心者のため、なかなか上手くできてないです。
Acrobat.CAcroAppのところは、定義されてないのエラーがありました。
参照設定などなんかが必要がありますか?

No10363 (カンタービレ さん) に返信
> ■No10358 (mxh さん) に返信
>>カンタービレ さん:
>>
>>ご回答有難う御座います。
>>教えて頂いた方法でAdobe Acrobatがインストールされないと、だめですね。
>>私はAdobe Reader 8を利用していますが、
>>できますか?
>
> 「Acrobat 7.0 / Adobe Reader 7.0 および Acrobat 8 / Adobe Reader 8 の場合: AcroPDF.dll を利用」http://support.adobe.co.jp/faq/qadoc/spitz.nsf/0/62c6c03d583f11eb49256c01000e8672?OpenDocument
> 私の書いたコードは6.0の頃のものデス。
>
> 読む限りは、AcroPDF.dllを使ってAdobe Reader 8がインストールされている条件では使えるんじゃないデスか?
> 後は8.0のSDKドキュメントなど参考にしてください。
>
引用返信 編集キー/
■10392 / inTopicNo.6)  Re[5]: Adobe Readerアプリケーションが終了してないです。
□投稿者/ acrord32.exe (1回)-(2007/11/16(Fri) 18:45:29)
前スレの やじゅ さんの記事はご覧になりました?
もう一度しっかり読み直されたほうがいいんじゃないですか?

引用返信 編集キー/
■10429 / inTopicNo.7)  Re[6]: Adobe Readerアプリケーションが終了してないです。
□投稿者/ カンタービレ (65回)-(2007/11/17(Sat) 13:05:51)
> Acrobat.CAcroAppのところは、定義されてないのエラーがありました。
> 参照設定などなんかが必要がありますか?

必要ありマス。
参照設定で、COM参照にAdobe Acrobat 8.0 Type Libraryというのがあると思いマスので
それを追加してください。

また、蛇足かも知れませんが、じゃんぬサマの書かれている
http://jeanne.wankuma.com/tips/programing/releasecom.html
でCOM参照の開放についても参考にした方がよいデス。

引用返信 編集キー/
■10472 / inTopicNo.8)  Re[7]: Adobe Readerアプリケーションが終了してないです。
□投稿者/ acrord32.exe (2回)-(2007/11/18(Sun) 23:50:26)
やじゅ さん曰く:
> 引用:
>>印刷後に自動で閉じさせるにはAdobe Readerでは不可能?。
>>(Acrobatにある「OLEオートメーション」なら可能だが、この機能はAdobe Readerには無いため)

なので、別のアプローチに変えたほうがよいのでは?
引用返信 編集キー/
■10481 / inTopicNo.9)  Re[8]: Adobe Readerアプリケーションが終了してないです。
□投稿者/ カンタービレ (69回)-(2007/11/19(Mon) 02:47:44)
No10472 (acrord32.exe さん) に返信
> やじゅ さん曰く:
>>引用:
> >>印刷後に自動で閉じさせるにはAdobe Readerでは不可能?。
> >>(Acrobatにある「OLEオートメーション」なら可能だが、この機能はAdobe Readerには無いため)
>
> なので、別のアプローチに変えたほうがよいのでは?

前のアプローチ方法でうまくいってないようでしたので・・。
またエラー系を含めた回避策がないと、どのアプローチでも同じかもしれません。

引用部分については、Acrobat Reader6.0の頃の話であり、今回8.0ということデスので
OLEオートメーションは使える→不可能じゃないという前提で書いてマス。
http://support.adobe.co.jp/faq/faq/qadoc.sv?2556+001
ページ引用:
> Adobe Reader 7.0 と Adobe Reader 8.0 では DDE メッセージによるコントロールに加えて、
> OLE オートメーションを利用して PDF 文書の閲覧や印刷を制御することが可能です。
再度引用を持ち出して使えない→出来ないような書き方はこの場合逆に誤解を与えかねませんよ。

テスト時は最初のやり方にせよOLE経由にせよ画面表示させるようにしてみると原因が
つかみやすいかも知れません。
どちらの方法にせよ警告等のダイアログが出ていて残ってしまっているような感じがしマス。

うまく動かない時の事象をもう少し詳細に調査し、原因をある程度特定できれば
回避策も出てくるかと思いマス。
引用返信 編集キー/
■10482 / inTopicNo.10)  Re[9]: Adobe Readerアプリケーションが終了してないです。
□投稿者/ acrord32.exe (3回)-(2007/11/19(Mon) 03:48:09)
No10481 (カンタービレ さん) に返信
> 引用部分については、Acrobat Reader6.0の頃の話であり、今回8.0ということデスので

引用元には7.0と書いてありますね。
また、8.1や8.1.1でも同様です。
引用返信 編集キー/
■10485 / inTopicNo.11)  Re[10]: Adobe Readerアプリケーションが終了してないです。
□投稿者/ mxh (11回)-(2007/11/19(Mon) 09:34:45)
皆様
ご指導を頂まして、本当に有難う御座います。
初心者なので、なかなか上手く質問したり、返信したりできなくて、
申し訳御座いません。
皆様のご回答をじっくり読ませて、
やってみます。
現在一応p.WaitForExit(1000)
時間を設定して、強制的に終了する方法でやっています。




引用返信 編集キー/
■10486 / inTopicNo.12)  Re[7]: Adobe Readerアプリケーションが終了してないです。
□投稿者/ mxh (12回)-(2007/11/19(Mon) 11:52:49)
No10429 (カンタービレ さん) に返信


>>Acrobat.CAcroAppのところは、定義されてないのエラーがありました。
>>参照設定などなんかが必要がありますか?
>
> 必要ありマス。
> 参照設定で、COM参照にAdobe Acrobat 8.0 Type Libraryというのがあると思いマスので
> それを追加してください。
>
> また、蛇足かも知れませんが、じゃんぬサマの書かれている
> http://jeanne.wankuma.com/tips/programing/releasecom.html
> でCOM参照の開放についても参考にした方がよいデス。
>

Adobe Acrobat 8.0 Type Libraryを追加して、やってみました。
***CType(CreateObject("AcroExch.App"), Acrobat.CAcroApp)の箇所は
「Activexコンポーネントを作成できません。」のエラーになりました。








引用返信 編集キー/
■10488 / inTopicNo.13)  Re[10]: Adobe Readerアプリケーションが終了してないです。
□投稿者/ カンタービレ (71回)-(2007/11/19(Mon) 12:14:51)
No10482 (acrord32.exe さん) に返信
> ■No10481 (カンタービレ さん) に返信
>>引用部分については、Acrobat Reader6.0の頃の話であり、今回8.0ということデスので
>
> 引用元には7.0と書いてありますね。
> また、8.1や8.1.1でも同様です。

あ、サンプルコードがAdobe Readerでは使えないのを指摘されていマス?
私の方も誤解のある書き方してましたね。
失礼しました。。

Readerのみの環境でAxAcroPDFLib.AxAcroPDFを使ったOLEオートメーションのWinアプリを作ってみましたが
オープン・プリンタへの印刷は出来マス。AxAcroPDFLib.AxAcroPDFへの明示的なクローズ命令はありませんが
ActiveXオブジェクトの破棄後、若干時間がかかりますがAcrord32.exeが終了していることも確認してみました。

mxhサマ、申し訳ないデスがサンプルそのままでは使えません。
ReaderでOLEオートメーションを使う際はAxAcroPDFLib.AxAcroPDFを使って書かないとデス。

引用返信 編集キー/
■10491 / inTopicNo.14)  Re[8]: Adobe Readerアプリケーションが終了してないです。
□投稿者/ カンタービレ (72回)-(2007/11/19(Mon) 12:47:59)
No10486 (mxh さん) に返信
> Adobe Acrobat 8.0 Type Libraryを追加して、やってみました。
> ***CType(CreateObject("AcroExch.App"), Acrobat.CAcroApp)の箇所は
> 「Activexコンポーネントを作成できません。」のエラーになりました。
>
はい、先の返信でも書きましたが、Acrobat用の記述デスので、Readerのみの環境では
COM参照はAdobe Acrobat 8.0 Browser Control Type Library 1.0になりマス。
記述の仕方も変わりマスのでご注意ください。。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -