¿Cómo puedo imprimir múltiples tipos de archivos en Windows desde la línea de comandos?

2

He configurado una impresora PostScript llamada PSPinter en el puerto FILE. Puedo acceder a varios programas (MS Word, Excel, Acrobat, etc.) e imprimir el documento en esta impresora. Me pide un nombre de archivo, y una vez que genera el archivo, puedo examinarlo y confirmar que está bien formado PostScript. Necesito hacer algo como, que detrás de escena invoca el programa correcto y llama a la función de impresión:

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

Mi pregunta es, ¿cómo puedo hacer esto programáticamente desde la línea de comandos de Windows? También necesitaría poder especificar el nombre del archivo de salida. Alternativamente, estoy abierto a usar algo como CutePDF para producir la salida (no me importa si la salida de los archivos es PDF o (E) PS), pero este método también debería ejecutarse programáticamente desde la línea de comandos.

cbannerjee
fuente

Respuestas:

1

Utilice la capacidad de la línea de comandos de PDFCreator para convertir cualquier archivo imprimible a PDF

  1. Instale PDFCreator junto con su interfaz COM
  2. Cree un nuevo archivo de texto con el siguiente código y guárdelo como 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
    

Uso

CMD> C:\some\folder\Convert2PDF.vbs "C:\inputfile.doc" "C:\outputfolder" "outputfilename"
nixda
fuente
¡Gracias! - ¡Esto se ve genial! Todavía tengo que probarlo ...
cbannerjee
Había descargado PDFCreator, pero necesito derechos de administrador para instalarlo ... el corp. Los chicos de TI deben darme permiso primero ...
cbannerjee
Funcionó, muchas gracias. Además, para los interesados, hay una tonelada de ejemplos en la instalación de PDFCreator en la carpeta COM. Esto hace que el uso sea mucho más claro.
cbannerjee
0

Puede imprimir en impresoras de archivos desde Word con el método Application.PrintOut. Consulte http://msdn.microsoft.com/en-us/library/office/ff840681.aspx para obtener más información.

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

Ejecuta el archivo vbs anterior de la siguiente manera: file.vbs c: \ my \ path \ to \ input.docx MyPrinter c: \ my \ path \ to \ output.ps

Asegúrese de que los nombres de su impresora no contengan espacios ...

Elijo el "HP Color LaserJet 4550 PS" para archivos PS en color, lo llamo 4550PS en Windows.

usuario2531336
fuente