JoB*_*ter 6 javascript activex cmd
我正在使用WScript.shell activeX调用.exe文件.该文件是wkhtmltopdf.exe,用于将HTML页面转换为.pdf.当我在代码中调用C:\ wkhtmltopdf.exe时,一切运行良好.它运行然后正确关闭.但我的问题是您需要从cmd运行它,程序名称,然后是您正在阅读的HTML文件名,后跟您希望将其创建为的.pdf名称.
例如:
c:\wkhtmltopdf.exe c:\PDFTestPage.html c:\TEST.pdf
Run Code Online (Sandbox Code Playgroud)
这将调用wkhtmltopdf.exe,读取c:\ PDFTestPage.html,然后创建c:\ TEST.pdf.当我将其键入cmd时工作正常.
有没有人知道一个不仅运行和.exe但实际执行命令行的activeX?
这是我目前正在使用的代码.
function callShellApplication(){
var objShell = new ActiveXObject("WScript.shell");
objShell.run('"c:\wkhtmltopdf.exe"');
}
Run Code Online (Sandbox Code Playgroud)
真的希望它是以下.
function callShellApplication(){
var objShell = new ActiveXObject("WScript.shell");
objShell.run('"c:\wkhtmltopdf.exe c:\PDFTestPage.html c:\TEST.pdf"');
}
Run Code Online (Sandbox Code Playgroud)
另外注意.出于某种原因,我无法从绝对路径启动.exe.我必须移动到目录,然后只需键入wkhtmltopdf.exe.填充路径是:
C:\Program Files (x86)\wkhtmltopdf\wkhtmltopdf.exe
Run Code Online (Sandbox Code Playgroud)
我真的只使用UNIX,所以我不确定路径中的空格.我可以用空格做一个chdir,但我不能在执行时使用填充路径.任何信息都有帮助.先感谢您.
Peb*_*bbl 10
根据以下内容:
http://msdn.microsoft.com/en-us/library/d5fk67ky%28v=vs.84%29.aspx
你应该能够直接传递命令作为strCommandparam的一部分,你可能最好摆脱包装整个命令和参数的额外引号:
function callShellApplication(){
var objShell = new ActiveXObject("WScript.shell");
objShell.run('c:\wkhtmltopdf.exe c:\PDFTestPage.html c:\TEST.pdf');
}
Run Code Online (Sandbox Code Playgroud)
此外,您应该能够通过将每个项目用引号括起来处理路径中的空格,如下所示:
function callShellApplication(){
var objShell = new ActiveXObject("WScript.shell");
objShell.run('"C:\Program Files (x86)\wkhtmltopdf\wkhtmltopdf.exe" "c:\PDFTestPage.html" "c:\TEST.pdf"');
}
Run Code Online (Sandbox Code Playgroud)
您还应该记住您是否愿意bWaitOnReturn以及intWindowStyle您需要哪些(某些可执行文件可能会从特定样式中受益).
同样是一个警示 - 自从我使用以来已经有一段时间WScript.shell- 但你可能需要在你的路径中逃避你的反斜杠.所以路径可能需要如下所示:
objShell.run('"C:\\Program Files (x86)\\wkhtmltopdf\\wkhtmltopdf.exe"');
Run Code Online (Sandbox Code Playgroud)