PDFの用紙サイズ判定をするには?


ラマ  2004-02-20 21:06:27  No: 111954

指定フォルダ内のPDFを、指定プリンタより出力するプログラムを作成しています。
PDFの内容により用紙サイズ(A4又はA3)の切替えを行いたいのですが、
このようなことはできるのでしょうか?

それと、もう一つ、
現状、ShellExecute(Me.hwnd, "Print", "C:\test.pdf", vbNullString, vbNullString, 0)にて出力をしているのですが、
出力後アクロバットリーダーが起動したままとなってしまいます。
終了させることはできるでしょうか?

よろしくお願い致します。

Win2000
VB 6.0 SP5


とろ  2004-02-20 22:32:00  No: 111955

pdf.ocx を使いましょう。


ラマ  2004-02-20 23:22:59  No: 111956

ご返答ありがとうございます。

環境に関してですがモレがありました。
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内の情報?によりある程度自動判断することはできないものでしょうか?


岡田 之仁  2004-02-21 01:29:31  No: 111957

プリンター側の設定は、常に一つですので、用紙サイズも
デフィルト設定のまま・・・

ですので、PDFの中身を見てプリンターの用紙設定を
変更しないことには、反映されません。

Acrobat Reader のみと言うことを想定するならば、
CreateObjectでしょう・・・

もっと大規模なシステムを作成した折、手間を考え、トラブル
で振り回されたくなたっかので、こんな商品を見つけて利用
しました。

http://www.xlsoft.com/jp/products/activepdf/activepdf-products.html

プログラム作成できるにこしたことは無いのですが・・・
個々のソフトは案外安価だったので、必要なもののみ購入し
流用しましたが・・・

ご参考までに・・・

以上。


ラマ  2004-02-21 02:17:25  No: 111958

情報ありがとうございます。

私の説明がほんとに下手で申し訳ないです。
現状、「通常使うプリンタの切り替え・用紙サイズの切り替え(A4,A3)」は、
APIを使用することで実現できています。

従って、PDFの中を見て用紙サイズの判断さえできればほぼ完成なのです。
この「PDFの中を見る」というところがまったく分かりません。
CreateObjectについて検索してみましたが、Acrobat時の使用例ばかりで
Acrobat Readerでの使用例が見つけられませんでした。

また、なにをもってA3と判断するのでしょう?


IMA  2004-02-21 15:08:18  No: 111959

横から失礼します。

Acrobat SDK などを使わなくて処理するなら、直接PDFファイルを
読み込んで調べることができるはずです。

>http://www.kobu.com/docs/pdf/pdfxhand.htm
こちらのHPで解説されている
>ページ一覧オブジェクト
>MediaBox属性
で判断できるのではないでしょうか?

なお、詳しい資料は以下のPDF Reference等をを参照してください。
>http://partners.adobe.com/asn/tech/pdf/specifications.jsp


ラマ  2004-02-22 07:03:51  No: 111960

またまた情報ありがとうございます。

MediaBox属性確認しました。
できそうですね。

休み明けにテストして結果報告させていただきます。


ラマ  2004-02-23 23:07:19  No: 111961

皆さんのおかげで無事取得することができました。
ありがとうございます。
(PDFをBinaryで読みMediaBox値を取得としました)

しかし、新たな問題が・・・
用紙サイズの取得-->用紙サイズの切り替え-->印刷の手順で印刷テストはできたのですが、
複数のPDFを連続で印刷すると、全て同じサイズ
(おそらく最後に設定した用紙サイズ)で印刷されてしまいました。

WaitForSingleObjectなるものでShellExecute(ShellExecuteEXも)の
処理終了待ちを行ってみたのですが効果なしでした。

※プレイクポイントを設定し、用紙が出力されるのを待って次の処理に進むと
問題なく印刷されました。

何か手段はないものでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加