VBから印刷イメージを自動にPDFファイルに変換し指定フォルダに保存するにはどのようにすればよいのでしょうか?
いろいろ調べても良くわかりません。
できればサンプルプログラムもあれば幸いです。

現在は、通常使うプリンタにAcrobat PDFWriterを指定し手動でPDFファイルを作っている次第です。

環境としてはWindows2000、VB6.0、Acrobat4.05です。

どんな情報でも結構です。お待ちしております。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

サンプルです。



Option Explicit

'開発環境: VB6SP5 Acrobat4.0
'参照設定:Adobe Acrobat 4.0 Type Library
'    参照設定初回設定時は「Acrobat」と表示されています
'    一度チェックをつけ、もう一度参照設定ダイアログを開くと「Adobe Acrobat 4.0 Type Library」になっているはずです。

Sub TEST()
  Dim acroApp     As CAcroApp   'CAcroAppオブジェクト
  Dim acroPDDoc    As CAcroPDDoc  'CAcroPDDocオブジェクト
  Dim acroExchAVDoc  As CAcroAVDoc  'CAcroAVDocオブジェクト
  Dim blnRtn     As Boolean   '戻り値
  Dim lngAVDocNum   As Long
  
  'インスタンス生成
  Set acroApp = CreateObject("AcroExch.APP")
  Set acroPDDoc = CreateObject("AcroExch.PDDoc")
  Set acroExchAVDoc = CreateObject("AcroExch.AVDoc")

'デバッグ用
acroApp.Show
 
  'ファイルオープン
  blnRtn = acroExchAVDoc.Open("c:\test.bmp", "")
  If blnRtn Then
    MsgBox "オープンエラー"
    GoTo PGMEND:
  End If
  
  '変換処理中の待機処理
  Do While lngAVDocNum = acroApp.GetNumAVDocs
    DoEvents
  Loop
  
  '変換済みのアクティブPDFファイルオブジェクト取得
  Set acroExchAVDoc = acroApp.GetActiveDoc()
  Set acroPDDoc = acroExchAVDoc.GetPDDoc()
    
  'PDFファイルとしてセーブ
  blnRtn = acroPDDoc.Save(PDSaveFull Or PDSaveCollectGarbage Or PDSaveLinearized, "c:\test.pdf")
  
  If Not blnRtn Then
    MsgBox "セーブエラー"
    GoTo PGMEND:
  End If
 
 
PGMEND:
  '閉じる
  blnRtn = acroExchAVDoc.Close(False)
  acroApp.Exit
 
  '開放
  Set acroExchAVDoc = Nothing
  Set acroPDDoc = Nothing
  Set acroApp = Nothing
End Sub
    • good
    • 0
この回答へのお礼

詳しいサンプルまで頂きまして、大変助かりました。すごいですね!また何かありましたらよろしくお願いいたします。

お礼日時:2002/01/15 14:38

ソースが長いので簡単にやり方だけ書きます。


(1)レジストリ(HKEY_CURRENT_USER\SOFTWARE\Adobe\Acrobat PDFWriter\PDFFileName)に作成するPDFファイル名を書き込む
(2)ShellExecute(Me.hwnd, "Print", strPath, "", "", 0)で関連付けされたアプリで印刷する。
これで、PDFファイルが作成されるはず・・・。

もし、デフォルトプリンタをPDFにしていない場合、失敗します。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPDFファイルの編集ソフト(フリーソフトにて)

メールの添付ファイルでもらったPDFファイルを、
編集出来る「フリーソフト」はないでしょうか?

・申込書のPDFダウンロードなどで、申込書にキーボードから入力して、
添付ファイルで返信したい。
・添付PDFファイルの自分の持っている画像を貼り付けて編集したい

という意図です。

ちなみにフリーソフトの
・アドビー アクロバット リーダー
(PDFファイルを見ることだけできるもの)
・クセロPDF
(PDFファイルを作成だけ出来るもの)
しかありません

Aベストアンサー

PDFのメリットは、以下のようなものです。

(1)OS等の環境が違っても、作成した通りに見ることが出来る。
(2)軽量
(3)改ざん防止

更新を容易に許せば、PDFにするメリットが部分的に失われます。

Acrobatでは、記入欄にデータを入力できるようにPDFを作成する機能がありますが、これもPDFを更新するのではなく、データを入力した状態で印刷できることを目的としています。

ちなみにAdobe Readerは、見るだけでなく、PDF中のテキストや画像をコピーすることもできます。

添付ファイルに直接書き込んで返信が必要な電子ファイルなら、ワードやエクセルで作成してもらえばいいのではないでしょうか?

QVB.NET:Acrobat以外でPDFを作成するには

Acrobat Readerを使用せずに、VB.NETでPDFファイルを作成したいのですが、何かよい品はありませんでしょうか。
ただし、PDFWriter(違うかも知れません、すみません)はフリーな品。
また、VB.NETに組み込み可能である事。(出力先やファイル名等はガチガチにVB.NETでプログラミングします、当然、選択Windowとかは表示しません。ので、引数でこれらを渡せる事が条件です。)
どなたか、良い情報をお持ちでしたら教えてください。
宜しくお願いします。

Aベストアンサー

自分で探しましょう。

参考URL:http://download.goo.ne.jp/software/category/win/writing/dtp/

QWebから保存したPDFファイルを加工編集するフリーソフト。

Webから保存したPDFファイルを加工編集するフリーソフトを探しているのですが、文書を部分空欄に加工編集出来るものはないでしょうか?

Aベストアンサー

「部分空欄」が白ベタで塗りつぶす、でいいのならPDF-XChange Viewerで可能です。
テキストボックスツールで背景色を白(または任意の色)にし、枠線を白(または任意の色)にし、テキストに何も書き足さなければ部分空白になるでしょう。
Viewerですが、加工して保存もできます。文面固定ですがスタンプも押せます。

参考URL:http://www.forest.impress.co.jp/lib/offc/document/pdf/pdfxchange.html

QVBとAdobe Acrobat SDKを使用してPDFファイルを作成したい

VBとAdobe Acrobat SDKを使用してPDFファイルを作成
したいと考えています.
SDKとVBの連携についての情報が見つからないため,
試行錯誤でプログラム作業をおこなっています.
VBとAdobe Acrobat SDKを使用したサンプルが掲載されているサイトまたは書籍はないのでしょうか?

OS:Windows2000+SP4
Visual Basic 6.0+SP6
Adobe Acrobat 5 +SDK

Aベストアンサー

サンプルはgoogleで探せばよいでしょう。
planetpdfが情報多いです。

参考URL:http://www.google.co.jp/search?q=CreateObject+AcroExch.APP

QPDF のデータを編集できるフリーソフトはある?

本質問に御対応頂き、ありがとうございます。
PDF のデータの中で、ある部分を消したり、トリミングしたりと編集をする方法がありますか?(フリーソフト とかで)
PDF PROFESSIONAL というものも、聞いたことがあるのですが・・・。
宜しく、御教示、お願い致します。

Aベストアンサー

基本的にPDFとはadobe社が作ったフォーマットなので
ライセンスが絡むのと技術的にお金や時間が掛かるので
フリーは無いです。

フリーウエアが多い、このご時世ですけどPDFに限ってないのはadobe社がリリースしている製品の品質が高いことと基本的にこの手の製品は業務で使う人が多いからです。

http://www.forest.impress.co.jp/lib/offc/document/pdf/pdfxchange.html
http://freesoft-100.com/review/pdf-explorer.php

>PDF PROFESSIONAL


いきなりPDF-Professional?
adobe pdf professional?

QVB6.0で印刷サイズを指定したい。(環境Windows2000)

VB6.0で印刷サイズを指定したい。(環境Windows2000)

Windows98ではユーザーサイズを指定できたのですが、Windows2000でそのままプログラムを動かすとエラーになってしまいます。

どうしたらいいでしょうか。

コードはこのように書いています。
用紙サイズ
With Printer
.PaperSize = vbPRPSUser 'ユーザ定義サイズ
  .Height = 56.7 * 216
  .Width = 56.7 * 350
 End With

Aベストアンサー

AddForm/DeleteForm かな

↓で"用紙"を検索

参考URL:http://www.vbvbvb.com/jp/gtips/

QPDFの編集が出来るいいフリーソフトはありませんか

PDFの編集をしたいのですがいいフリーソフトをご存知ないでしょうか?
Win7で編集できるソフトを探しています。
窓の杜とかでいろいろ落としてみたのですが・・・いまく使えるものがありません。
やりたいこととしては複数ページあるPDFがあるのですが、間に不要ページが存在しているのでそのページを落として再度結合させてしまいたいのですが・・・
2,3のPDFの編集をするだけなのでAcrobatを購入するのも馬鹿らしいですし・・・
よろしくお願いします。
もしよかったら上記の編集の方法も補足頂けると幸いです。

Aベストアンサー

こんにちは

ページ単位の編集でよければ、pdf24でできた思いますよ。
freeなので試してみてください。

参考URL:http://en.pdf24.org/

QVB5.0とVB6.0

ご教授お願いします。
VB4.0で開発を始め、VB5.0に。主にDBはDAOを使っています。いくつかのアプリを配布し(セットアップウィザードを使い)、その後VB6.0がリリースされましたが、配布済みアプリに影響があると思いB6.0へのUpをあきらめていました。VB5.0は98でしか認められていず、2000でも試しましたが、確かに一部の動作でエラーが起こったりしました。使用しているマシンが不安定になったので、中古PCに98をインストールし、開発環境を移しましたが、セットアップウィザードが「予期せぬエラー」とかで動きませんでした。以上が経過です。
ようやくVB6.0を入手し、とりあえず2000で、2,3のアプリで試したところ、そのまま(何の手も加えず)OKでした。ちょっと気がついた点といえば、作成されたEXEのサイズが1割ほど小さくなっていました。
質問ですが、VB5.0→VB6.0では何が変わったのでしょうか?(当時はある程度読んだ気がしますが、覚えていません)
そして、アップ後、注意しなければならないことは何でしょうか?
よろしくお願いいたします。

ご教授お願いします。
VB4.0で開発を始め、VB5.0に。主にDBはDAOを使っています。いくつかのアプリを配布し(セットアップウィザードを使い)、その後VB6.0がリリースされましたが、配布済みアプリに影響があると思いB6.0へのUpをあきらめていました。VB5.0は98でしか認められていず、2000でも試しましたが、確かに一部の動作でエラーが起こったりしました。使用しているマシンが不安定になったので、中古PCに98をインストールし、開発環境を移しましたが、セットアップウィザードが「予期せぬエ...続きを読む

Aベストアンサー

主には コントロールが更新されているといった点でしょう
コモンコントロールに VB5独自のコントロールと同等の機能が搭載されたとか …
あとは コンパイラ自体の最適化や バグフィックスです
VB6を使うのであれば SP6などのパッチを当てましょう
http://www.microsoft.com/downloads/details.aspx?familyid=A8494EDB-2E89-4676-A16A-5C5477CB9713&displaylang=ja

ADOやDAOなどは そのまま使えるものがほとんどだとおもいます

[VB] 32 ビット版から Visual Basic 6.0 への移植時の注意事項
http://support.microsoft.com/kb/412580/ja
なども参考になるかも ・・・

QPDF回転編集フリーソフト

PDF画像を回転保存できるフリーソフトを教えてください。

Aベストアンサー

下記にある、RotPDFや、PDF RotatePageでは如何でしょうか?

http://www.pdf-soft.com/freesoft/free07.html

QVB6.0からVB.NETへの移行

VB6.0から.NETへの移行を行うこととなりましたが、C++で作成したDLL呼び出し方法がわからず悩んでいます。
C++側で作成したDLLは修正が出来ない為、.NET側のみで修正しなければならない状況です。

VB6.0側のプログラムは以下のような感じです。

Public FName() As String

Declare Function A Lib "Test.dll" (ByRef field As Variant) As Long

ReDim FName(4) As String

FName(1) = "1"
FName(2) = "22"
FName(3) = "333"
FName(4) = "4444"

Call A(fieldName)


C++側は、以下の形で受けているようです。

A(variant *field);

SAFEARRAY *psa = *(field->pparray);


VB.NET側で以下の様にしてみたのですが、まともに動いてくれません。

Public FName() As String
Declare Function A Lib "Test.dll" (ByRef field As Object) As Integer


ReDim FName(3) As String

FName(0) = "1"
FName(1) = "22"
FName(2) = "333"
FName(3) = "4444"

Call A(FName)

VB.NETに詳しい方であれば、すごく基本的なことなのではないかと思いますが、よろしくお願いいたします。

VB6.0から.NETへの移行を行うこととなりましたが、C++で作成したDLL呼び出し方法がわからず悩んでいます。
C++側で作成したDLLは修正が出来ない為、.NET側のみで修正しなければならない状況です。

VB6.0側のプログラムは以下のような感じです。

Public FName() As String

Declare Function A Lib "Test.dll" (ByRef field As Variant) As Long

ReDim FName(4) As String

FName(1) = "1"
FName(2) = "22"
FName(3) = "333"
FName(4) = "4444"

Call A(fieldName)


C++側は、以下の形で受...続きを読む

Aベストアンサー

http://www7.big.or.jp/~pinball/discus/vb/60072.html
なんか、こことすごく似ておりますが^^;

仮想でDLLを作成して、やってみました。


たしかにVB6からは問題ないですが、.netからはいろいろパターンをやってみましたが。問題なしでした。
一番のネックは
>variant *field
という部分ですね。

配列先頭のアドレスを渡してもみましたが、文字情報の先頭アドレスだけ渡り、そのアドレスが配列要素を持っているという認識が、C側で成されないようです。
DLLの宣言も様々やって見ましたが、配列情報が渡りませんでした。
Marshal.StructureToPtrメソッドなども利用してで、いろいろやってみましたが、これまた。。。。無理でした。。。



受け自体が、SAFEARRAYであれば、問題なしなのですが・・・
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpcondefaultmarshalingforarrays.asp

直接variantへのやりとりは、結構探したつもりですが、どこにもありませんでした。
無理なのかな~~~

回避策でしかありませんが、Test.DLLのAを呼ぶためのDLLをCやVB6で作成し、ワンクッション処理をかませてはいかがでしょう?

http://www7.big.or.jp/~pinball/discus/vb/60072.html
なんか、こことすごく似ておりますが^^;

仮想でDLLを作成して、やってみました。


たしかにVB6からは問題ないですが、.netからはいろいろパターンをやってみましたが。問題なしでした。
一番のネックは
>variant *field
という部分ですね。

配列先頭のアドレスを渡してもみましたが、文字情報の先頭アドレスだけ渡り、そのアドレスが配列要素を持っているという認識が、C側で成されないようです。
DLLの宣言も様々やって見ましたが、配列情報...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報