指定フォルダ内のPDFを、指定プリンタより出力するプログラムを作成しています。
PDFの内容により用紙サイズ(A4又はA3)の切替えを行いたいのですが、
このようなことはできるのでしょうか?
それと、もう一つ、
現状、ShellExecute(Me.hwnd, "Print", "C:\test.pdf", vbNullString, vbNullString, 0)にて出力をしているのですが、
出力後アクロバットリーダーが起動したままとなってしまいます。
終了させることはできるでしょうか?
よろしくお願い致します。
Win2000
VB 6.0 SP5
pdf.ocx を使いましょう。
ご返答ありがとうございます。
環境に関してですがモレがありました。
AcrobatReaderのみインストールされているPCで実行させたいと思っています。
pdf.ocxに関しても下記2通り試しましたが、
Acrobatがインストールされていないと動きませんでした。
根本的にやり方が間違っているのでしょうか?
1.pdf.ocxをコンポーネントに追加。
フォームにPDFオブジェクトを貼り付け。
Pdf1.printAllにて出力。
2.Set AcroPDDoc = CreateObject("AcroExch.PDDoc")・・・
AcroAVDoc.printPages 0, 0, 1, 0, 0 にて出力。
用紙サイズは通常任意に指定して印刷しますが、
PDF内の情報?によりある程度自動判断することはできないものでしょうか?
プリンター側の設定は、常に一つですので、用紙サイズも
デフィルト設定のまま・・・
ですので、PDFの中身を見てプリンターの用紙設定を
変更しないことには、反映されません。
Acrobat Reader のみと言うことを想定するならば、
CreateObjectでしょう・・・
もっと大規模なシステムを作成した折、手間を考え、トラブル
で振り回されたくなたっかので、こんな商品を見つけて利用
しました。
http://www.xlsoft.com/jp/products/activepdf/activepdf-products.html
プログラム作成できるにこしたことは無いのですが・・・
個々のソフトは案外安価だったので、必要なもののみ購入し
流用しましたが・・・
ご参考までに・・・
以上。
情報ありがとうございます。
私の説明がほんとに下手で申し訳ないです。
現状、「通常使うプリンタの切り替え・用紙サイズの切り替え(A4,A3)」は、
APIを使用することで実現できています。
従って、PDFの中を見て用紙サイズの判断さえできればほぼ完成なのです。
この「PDFの中を見る」というところがまったく分かりません。
CreateObjectについて検索してみましたが、Acrobat時の使用例ばかりで
Acrobat Readerでの使用例が見つけられませんでした。
また、なにをもってA3と判断するのでしょう?
横から失礼します。
Acrobat SDK などを使わなくて処理するなら、直接PDFファイルを
読み込んで調べることができるはずです。
>http://www.kobu.com/docs/pdf/pdfxhand.htm
こちらのHPで解説されている
>ページ一覧オブジェクト
>MediaBox属性
で判断できるのではないでしょうか?
なお、詳しい資料は以下のPDF Reference等をを参照してください。
>http://partners.adobe.com/asn/tech/pdf/specifications.jsp
またまた情報ありがとうございます。
MediaBox属性確認しました。
できそうですね。
休み明けにテストして結果報告させていただきます。
皆さんのおかげで無事取得することができました。
ありがとうございます。
(PDFをBinaryで読みMediaBox値を取得としました)
しかし、新たな問題が・・・
用紙サイズの取得-->用紙サイズの切り替え-->印刷の手順で印刷テストはできたのですが、
複数のPDFを連続で印刷すると、全て同じサイズ
(おそらく最後に設定した用紙サイズ)で印刷されてしまいました。
WaitForSingleObjectなるものでShellExecute(ShellExecuteEXも)の
処理終了待ちを行ってみたのですが効果なしでした。
※プレイクポイントを設定し、用紙が出力されるのを待って次の処理に進むと
問題なく印刷されました。
何か手段はないものでしょうか?
ツイート | ![]() |