0

ユーザーが一連の技術図面番号を入力し、そこからパケットを作成できるようにする vba コードを設計しています。autocad ファイルを扱っているときに問題が発生しました。私たちの会社にはAutoCAD LTがあるため、APIを利用できません。したがって、AdobeのPDFMaker APIを使用してファイルを直接pdfに変換しています。残念ながら、pdfMaker の設定はかなり制限されているため、出力された pdf パケットを解析して白黒 (モノクロ) で印刷する必要があります。現在、パケットを開いて必要なページを印刷するサブルーチンがありますが、特に acrobat を開いて詳細設定で「モノクロ」構成を選択すると、白黒しか印刷されません。コマンドを送信する方法はありますか (私はそれを信じています。s in javascript?) を使用して、このカラー構成を設定し、サイズ オプションを設定しますか? これが私のコードです。

Public xlBook              As Workbook
Public xlSheet             As Worksheet
Public LastRow             As Integer
Public ItemNumber          As String
Public Vin5                As String
Public Vin                 As String
Public FullPath            As String

Sub PdfFormat()

Dim strMakeFile         As String
Dim LastRow             As Integer


Set xlBook = ActiveWorkbook
Set xlSheet = xlBook.Sheets(1)
ItemNumber = Range("E1")
Vin5 = Range("F1")
Vin = ItemNumber & "0" & Vin5
FullPath = "\\eastfile\Departments\Engineering\MACROS\New Packet Output\" &     Vin & "\"


strMakeFile = FullPath & Vin & ".pdf"
LastRow = Range("A" & xlSheet.Rows.Count).End(-4162).Row

Dim AcroExchApp     As New Acrobat.AcroApp
Dim AcroExchAVDoc   As New Acrobat.AcroAVDoc
Dim AcroExchPDDoc   As Acrobat.AcroPDDoc
Dim OpenError       As Boolean
Dim PrintError      As Boolean


OpenError = AcroExchAVDoc.Open(strMakeFile, "")

!!!!!CODE FOR PRINTER SETTINGS HERE!!!!!

PrintError = AcroExchAVDoc.PrintPagesSilentEx(0, 5, 3, 1, 1, 0, 0, 0, -5)

Debug.Print "Open Error: " & Not (OpenError)
Debug.Print "Print Error: " & Not (PrintError)
Debug.Print Vin

AcroExchApp.CloseAllDocs


End Sub

お時間をいただきありがとうございます

4

1 に答える 1

1

Acrobat の印刷パラメータは、Acro-js ヘルプファイルに記載されています。たとえば、Acro JS 印刷オプションの設定

VBS/VBA には 2 つの使い方があります。Acro-Form API の助けを借りて、多かれ少なかれ直接 js コードを実行できます。ここで簡単な例を示しました: VBA/VBS から Acro js を実行する

もう 1 つの方法は、VBA/VBS Ole 接続を介して変換された js コードを使用できる JS オブジェクトを使用することです。これは、Adobe Acrobat IAC リファレンスに記載されています。

次の例では、jso を使用していくつかの印刷パラメーターを設定しています。指定された印刷パラメーターを必要なものに変更するか、Acro JS helfile で他の例を検索し、上記の方法で直接実行します。がんばれ、ラインハルト

'// print dropped files with printParameter
set WshShell = CreateObject ("Wscript.Shell")
set fs = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments

if objArgs.Count < 1 then
    msgbox("Please drag a file on the script")
    WScript.quit
end if
    'contact Acrobat
Set gApp = CreateObject("AcroExch.App")
gApp.show 'comment or take out to work in hidden mode

  'open via Avdoc and print
for i=0 to objArgs.Count - 1
    FileIn = ObjArgs(i)
    Set AVDoc = CreateObject("AcroExch.AVDoc")
    If AVDoc.Open(FileIn, "") Then
        Set PDDoc = AVDoc.GetPDDoc()
        Set JSO = PDDoc.GetJSObject
        jso.print false, 0, 0, true
        set pp = jso.getPrintParams
        pp.printerName = "hp deskjet 990c"
        pp.firstPage = 0  '-> Zero based (firstPage = 0)
        pp.lastPage = 5   '-> Zero based (pageCount - 1)
        pp.interactive = pp.constants.interactionLevel.automatic  '-> no print dialog
        pp.pageHandling = pp.constants.handling.booklet
        pp.booklet.duplexMode = pp.constants.bookletDuplexModes.BothSides
        pp.booklet.binding = pp.constants.bookletBindings.LeftTall
        jso.print(pp)
        gApp.CloseAllDocs
    end if
next

gApp.hide
    gApp.exit
    MsgBox "Done!"
    Quit()

Sub Quit()
      Set JSO  =  Nothing
      Set PDDoc = Nothing
      Set gApp =  Nothing
      Wscript.quit
End Sub 
于 2017-12-01T16:15:26.963 に答える