如何使用Jscript打印文件

nix*_*xda 4 windows-7-x64 jscript

目标

我想通过PDF打印机打印文件,这不是默认打印机.我能够将普通打印机暂时更改为PDF打印机.

问题

但我不知道如何通过Jscript打印.doc,.txt或.xls.此外,我找不到保存默认打印机名称的方法,因此我可以在打印文件后切换回来.

Jscript代码

var objShell = new ActiveXObject("Shell.Application");
var objFSO = new ActiveXObject("Scripting.FileSystemObject");    

try {
  var PDFCreatorQueue = new ActiveXObject("PDFCreatorBeta.JobQueue");
  PDFCreatorQueue.Initialize();

  var sourceFile   = WScript.Arguments(0)
  var sourceFolder = objFSO.GetParentFolderName(sourceFile)
  var sourceName   = objFSO.GetBaseName(sourceFile)
  var targetFile   = sourceFolder + "\\" + sourceName + ".pdf"  

  //HERE GOES THE COMMAND TO SAVE THE CURRENT DEFAULT PRINTER NAME TO A TEMP VARIABLE
  objNet.SetDefaultPrinter("PDFCreator");
  //HERE GOES THE PRINT COMMAND WHICH I DON'T KNOW
 // HERE GOES THE COMMAND TO CHANGE BACK TO THE OLD DEFAULT PRINTER

  if(!PDFCreatorQueue.WaitForJob(3)) {
    WScript.Echo("The print job did not reach the queue within " + 3 + " seconds"); 
  }
  else {
    var job = PDFCreatorQueue.NextJob;  
    job.SetProfileByGUID("DefaultGuid");
    job.ConvertTo(targetFile);

    if(!job.IsFinished || !job.IsSuccessful) {
        WScript.Echo("Could not convert the file: " + targetFile);
    }
  }  
  PDFCreatorQueue.ReleaseCom();
}
catch(e) {
  WScript.Echo(e.message);
  PDFCreatorQueue.ReleaseCom();
}
Run Code Online (Sandbox Code Playgroud)

Han*_*ant 6

使用ShellFolderItem.InvokeVerbEx()函数.MSDN文章中的JScript示例代码显示了如何使用它.将第一个参数设为"print",将第二个参数设为打印机的名称.因此,您可以删除使用默认打印机修补的代码.