如何使用Jscript打印文件

时间:2014-12-12 23:06:16

标签: 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();
}

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

从js打印网页非常简单,你可以在iFrame上使用window.print()方法(这只适用于可以转换成网页的文件格式,因此它不能与.doc扩展一起使用)

<iframe id="textfile" src="text.txt"></iframe>
<button onclick="print()">Print</button>
<script type="text/javascript">
function print() {
    var iframe = document.getElementById('textfile');
    iframe.contentWindow.print();
}
</script>

这些将显示一个消息框,用于选择要使用的打印机等。 你要求的是什么似乎是无声的印刷,但它并没有标准化所有的broswer。

P.S。我认为使用打印机将此文件保存为pdf并不是一个好主意,我想你可以查看jsPDF(创建pdf的js工具)或者你应该考虑将pdf生成服务器