之前用过pdf的打印,主要思路是从后端获取文件路径,然后用js创建一个iframe标签, 使用iframe的contentWindow.print()方法完成打印。 // 这次遇到word文档的打印,想和之前用同样的方法,发现一直不能实现预期的效果,调完print, 发现没有反应。还有创建iframe标签到body自动会下载这个链接的文件。 后续排查发现是文件类型的问题,打印的文件最好还是pdf的。 最后改用本地配置代理,通过fetch请求文件地址,返回response.blob(),--URL.createObjectURL(blobData);生成临时路径来进行打印。
``` fetch(string) //string是文件地址
.then((response) => {
console.log(response);
if (!response.ok) {
throw new Error("Network response was not ok");
}
return response.blob(); // 获取二进制数据
})
.then((blobData) => {
// 替换这里的 PDF_URL 为你要打印的 PDF 文件链接
const PDF_URL = URL.createObjectURL(blobData);
// 等待 PDF 加载完成后进行打印
this.pdfUrl2 = PDF_URL;
setTimeout(() => {
document.getElementById("printMe").contentWindow.print();
}, 100);
});