我想通过PDF打印机打印文件,该打印机不是默认打印机。我能够将普通打印机暂时更改为PDF打印机。
但我不知道如何通过Jscript打印.doc,.txt或.xls。此外,我找不到保存默认打印机名称的方法,以便在我打印文件后切换回来。
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();
}
答案 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生成服务器