Skip to main content
Participant
August 13, 2025
Answered

PDF印刷処理不具合

  • August 13, 2025
  • 2 replies
  • 388 views

vb.netでAxAcroPDFLib.AxAcroPDFで作成された領域にPDFを表示後、printAll()を使用してPDFを印刷する処理を作成しました。印刷するPDFは複数あり、PDFによって印刷するプリンタが異なります(2種類ある)。印刷する順序はユーザーの選択によって任意に行え、既定のプリンタを切り替えたのちprintAll()で出力します。
AxAcroPDF1.printAll()

仮にPDF-AをプリンタAに、PDF-BをプリンタBに出力するとします。最初にPDF-Aを出力した後、PDF-Bを出力すると両方ともプリンタAに出力されます。逆にPDF-Bを出力した後、PDF-Aを出力すると両方ともプリンタBに出力されます。
プリンタの切り替えは、WshNetworkオブジェクトを作成して以下の方法を使用しております。
Public Sub SetDefaultPrinter(ByVal PrinterName As String)
 'WshNetworkオブジェクトを作成する
 Dim Tp As Type = Type.GetTypeFromProgID("WScript.Network")
 Dim WshNetwork As Object = Activator.CreateInstance(Tp)
 Tp.InvokeMember("SetDefaultPrinter", System.Reflection.BindingFlags.InvokeMethod
 , Nothing, WshNetwork, New Object() {PrinterName})
End Sub
プリンタの切り替え自体はうまくいっているようです。
printAll()で出力時、2回目以降は最新のプリンタを読みに行かず1回目に使用したプリンタをずっと引き継いでいる気がします。

解消するにはどうしたらよいでしょうか?

Correct answer Glasses Rabbit

amazing_videography5247さん

こんにちは。投稿をいただきましてありがとうございます。

具体的な回避方法などのご提示は難しい状況となりますが、Acrobat Readerをお使いの場合アプリケーション側の仕様的な制約が関わっていると考えられます。

該当のメゾットを利用した場合、2回目以降は指定した1回目に利用したプリンタの情報を引き継いでいる可能性がある点についてAcrobat Reader 環境では、「既定プリンタへ印刷する」方法のみ用意されている状況から、
おそらく既定プリンタをキャッシュして使い続ける性質があることでメゾットを使った制御が難しいものとなります。

これについては、以下海外のフォーラム記事でも仕様的な制約であることが名言がされております。
https://community.adobe.com/t5/acrobat-sdk-discussions/axacropdflib-axacropdf-print/m-p/12145459?utm_source=chatgpt.com&profile.language=en

お手数ではありますが、現状Acrobat Readerを利用している場合、別の方法をお探しいただくか
手動でのプリンタ設定を切り替え印刷していただくなどご検討ください。

2 replies

Glasses Rabbit
Community Manager
Glasses RabbitCommunity ManagerCorrect answer
Community Manager
August 19, 2025

amazing_videography5247さん

こんにちは。投稿をいただきましてありがとうございます。

具体的な回避方法などのご提示は難しい状況となりますが、Acrobat Readerをお使いの場合アプリケーション側の仕様的な制約が関わっていると考えられます。

該当のメゾットを利用した場合、2回目以降は指定した1回目に利用したプリンタの情報を引き継いでいる可能性がある点についてAcrobat Reader 環境では、「既定プリンタへ印刷する」方法のみ用意されている状況から、
おそらく既定プリンタをキャッシュして使い続ける性質があることでメゾットを使った制御が難しいものとなります。

これについては、以下海外のフォーラム記事でも仕様的な制約であることが名言がされております。
https://community.adobe.com/t5/acrobat-sdk-discussions/axacropdflib-axacropdf-print/m-p/12145459?utm_source=chatgpt.com&profile.language=en

お手数ではありますが、現状Acrobat Readerを利用している場合、別の方法をお探しいただくか
手動でのプリンタ設定を切り替え印刷していただくなどご検討ください。

Participant
August 19, 2025

ご回答ありがとうございます。私もプリンタがキャッシュされて使い続けられているような気がしました。試しに「spire.pdf」を使用したところ、不具合が解消されました。「spire.pdf」が最適なツールなのかはわかりませんが、何らかの別ツールが必要なことはわかりました。色々検討してみます。

assause
Community Expert
Community Expert
August 13, 2025

直接の回答ではないのですが、今回の場合、Acrobatを外部プログラムによって自動処理を行おうとしているでしょうか。

下記に記載があるのですが、アクションウィザード以外の自動化は許諾されていない、という点があるためです。

Adobe Acrobat の自動処理および文書ワークフロー

Participant
August 13, 2025

外部プログラムで自動化などということは行っておりません。https://pdf-file.nnn2.com/?p=240

にあるAcroPDFLib.AxAcroPDFのメソッドを利用しているだけです。印刷処理は印刷ボタンをクリックし、この中にあるprintAll()を使用してPDFを印刷します。その際に、想定しているプリンタに出ないということです。