jquery 调用打印机打印文件流 并且跳过预览
时间: 2023-08-04 12:05:49 浏览: 104
可以使用`window.print()`方法调用打印机打印文件流,但是无法跳过预览。如果要跳过预览,需要使用浏览器的插件或者ActiveX控件来实现。下面是一个使用ActiveX控件实现的示例代码:
```javascript
function printFile(filePath) {
try {
var ws = new ActiveXObject("WScript.Shell");
ws.Exec("rundll32.exe C:\\WINDOWS\\system32\\shimgvw.dll,ImageView_PrintTo /pt \"" + filePath + "\"");
} catch (e) {
alert("打印文件失败:" + e.message);
}
}
```
在上面的代码中,`filePath`参数为要打印的文件路径,例如:`C:\Users\test\Documents\test.pdf`。调用`printFile()`函数即可打印该文件,不会弹出预览窗口。但是需要注意的是,该方法只适用于Windows操作系统。
相关问题
jquery ajax 调用打印机打印文件流 并跳过预览
实现 jQuery Ajax 调用打印机打印文件流并跳过预览的步骤如下:
1. 使用 jQuery 的 Ajax 方法向服务器发送请求,获取需要打印的文件流数据。
2. 使用 JavaScript 的 Blob 对象将文件流数据转换为二进制文件对象。
3. 使用 FileReader 对象读取二进制文件对象,获取文件内容并将其转换为 ArrayBuffer。
4. 使用 window.URL.createObjectURL 方法将 ArrayBuffer 转换为 URL 对象,以便在打印机上打印。
5. 创建一个新的 iframe 元素,将其 src 属性设置为上一步中获取的 URL 对象。
6. 使用 JavaScript 的 print 方法打印 iframe 中的内容。
以下是基本的代码示例:
```
$.ajax({
url: '/path/to/file',
type: 'GET',
dataType: 'arraybuffer',
success: function (data) {
var blob = new Blob([data], {type: 'application/pdf'});
var fileReader = new FileReader();
fileReader.onload = function() {
var arrayBuffer = this.result;
var url = window.URL.createObjectURL(new Blob([arrayBuffer]));
var iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.src = url;
document.body.appendChild(iframe);
iframe.contentWindow.print();
};
fileReader.readAsArrayBuffer(blob);
}
});
```
这段代码将获取一个 PDF 文件流,并将其转换为 URL 对象,然后在 iframe 中打印。你可以将文件类型和 URL 对象的创建方法替换为你需要打印的文件类型和相应的方法。
jquery 调用打印机打印文件流跳过预览
可以使用JavaScript中的`window.print()`方法来调用打印机进行打印操作。但是,这个方法会弹出打印预览窗口,如果想要跳过预览直接打印,需要使用打印机的自动打印功能。
具体实现方式如下:
1. 将文件流转换成Blob对象。
2. 使用URL.createObjectURL()方法将Blob对象转换成URL。
3. 创建一个隐藏的iframe元素,并将其src属性设置为上一步转换得到的URL。
4. 在iframe加载完成后,使用JavaScript中的`window.print()`方法进行打印操作。
代码示例:
```javascript
function printFile(fileContent) {
// 将文件流转换成Blob对象
var blob = new Blob([fileContent], {type: 'application/octet-stream'});
// 将Blob对象转换成URL
var url = URL.createObjectURL(blob);
// 创建一个隐藏的iframe元素,并将其src属性设置为URL
var iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.src = url;
document.body.appendChild(iframe);
// 在iframe加载完成后,使用window.print()方法进行打印操作
iframe.onload = function() {
window.frames[0].focus();
window.frames[0].print();
document.body.removeChild(iframe);
};
}
```
需要注意的是,由于浏览器的安全限制,这种方式只能在用户主动触发打印操作时才能生效,不能自动触发。
阅读全文