web-dev-qa-db-ja.com

コマンドラインからWindowsで複数のファイルタイプを印刷するにはどうすればよいですか?

PSPinterというPostScriptプリンターをFILEポートにセットアップしました。さまざまなプログラム(MS Word、Excel、Acrobatなど)にアクセスして、このプリンターでドキュメントを印刷できます。ファイル名の入力を求められ、ファイルが出力されたら、それを調べて、整形式のPostScriptであることを確認できます。舞台裏で適切なプログラムを呼び出し、その上でprint関数を呼び出すようなことをする必要があります。

print /d:PSPRinter <inputFile.docx> <outputName.ps>

私の質問は、Windowsコマンドラインからプログラムでこれを行うにはどうすればよいですか?また、出力ファイル名を指定できる必要があります。あるいは、CutePDFのようなものを使用して出力を生成することもできます(ファイルの出力がPDFまたは(E)PS)であるかどうかは関係ありません)が、この方法でもコマンドラインからプログラムで実行します。

2
cbannerjee

PDFCreatorのコマンドライン機能を使用して、印刷可能なファイルをPDFに変換します

  1. インストール PDFCreator COMインターフェースと一緒に
  2. 次のコードで新しいテキストファイルを作成し、C:\some\folder\Convert2PDF.vbsとして保存します

    Set PDFCreator = Wscript.CreateObject("PDFCreator.clsPDFCreator", "PDFCreator_")
    With PDFCreator
     ReadyState = 0
     .cStart "/NoProcessingAtStartup"
     .cOption("UseAutosave") = 1
     .cOption("UseAutosaveDirectory") = 1
     .cOption("AutosaveFormat") = 0
     .cOption("AutosaveStartStandardProgram") = 0
     DefaultPrinter = .cDefaultprinter
     .cDefaultprinter = "PDFCreator"
     .cClearcache
     .cPrinterStop = false
     .cOption("AutosaveDirectory") = WScript.Arguments(1)
     .cOption("AutosaveFilename") = WScript.Arguments(2) 
     .cPrintfile cStr(WScript.Arguments(0))
      c = 0
      Do While (ReadyState = 0) and (c < 120)
       c = c + 1
       Wscript.Sleep 250
      Loop
     .cDefaultprinter = DefaultPrinter
     .cClearcache
     WScript.Sleep 200
     .cClose
    End With
    
    Public Sub PDFCreator_eReady()
     ReadyState = 1
    End Sub
    

使用法

CMD> C:\some\folder\Convert2PDF.vbs "C:\inputfile.doc" "C:\outputfolder" "outputfilename"
1
nixda

Application.PrintOutメソッドを使用して、Wordからファイルプリンターに印刷できます。詳細については、 http://msdn.Microsoft.com/en-us/library/office/ff840681.aspx を参照してください。

Set WordApp = CreateObject("Word.Application")
Set oArgs = Wscript.Arguments
doc = oArgs.Item(0)
'printer   
prt = oArgs.Item(1)
'prt = "4550PS"
' open the document
WordApp.Documents.Open(doc)

' set printer
WordApp.WordBasic.FilePrintSetup prt,,,1 

' print docx file to ps file
'OutputFileName = left(doc, len(doc) - 4)&"ps"
 OutputFileName = oArgs.Item(2)
 WordApp.ActiveDocument.PrintOut ,,, OutputFileName,,,,,,, True

 WordApp.ActiveDocument.Close False
 Set WordApp = nothing
 Set oArgs = nothing

上記のvbsファイルは次のように実行します。file.vbsc:\ my\path\to\input.docx MyPrinter c:\ my\path\to\output.ps

プリンタ名にスペースが含まれていないことを確認してください..。

カラーPSファイルには「HPColorLaserJet 4550 PS」を選択し、Windowsでは4550PSと名付けました。

0
user2531336