如何从命令行在 Windows 中打印多种文件类型?

如何从命令行在 Windows 中打印多种文件类型?

我已经将一个名为 PSPinter 的 PostScript 打印机设置为 FILE 端口。我可以进入各种程序(MS Word、Excel、Acrobat 等),并将文档打印到此打印机。它会要求我输入文件名,一旦它输出文件,我就可以检查它并确认它是格式正确的 PostScript。我需要做一些类似的事情,在后台调用正确的程序并调用它的打印功能:

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

我的问题是,我如何从 Windows 命令行以编程方式执行此操作?我还需要能够指定输出文件名。或者,我愿意使用 CutePDF 之类的东西来生成输出(我不在乎文件的输出是 PDF 还是 (E)PS),但此方法也必须从命令行以编程方式运行。

答案1

使用 PDFCreator 的命令行功能将任何可打印文件转换为 PDF

  1. 安装PDF创建器及其 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"

答案2

您可以使用 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.vbs c:\my\path\to\input.docx MyPrinter c:\my\path\to\output.ps

确保您的打印机名称不包含空格....

我选择“HP Color LaserJet 4550 PS”用于彩色 PS 文件,在 Windows 中将其命名为 4550PS。

相关内容