复制
收藏
提问
简洁

downloadOneReimbursement(ids).then(res=>{ const styleSheet = `<style> body{margin: 0 0} .content {width: 522px;height: 384.2px;background-color:#e2f4d2;page-break-after:always} .prinRight {width: 519.7px;height: 384.2px;display: flex;justify-content: space-between;align-items: center;position: relative;font-family: STFangsong;} .rightNumLeft {width: 53%;height: 100%;margin-left:12.5px;display: flex;flex-direction: column;justify-content: center;} .photoDiv {width: 71px;height: 99px;text-align: center;margin-left:96px;margin-bottom: 12.5px;} .photo {width: 100%;height: 100%} .rightTitle {margin: 14.5px 0;width: 100%;text-align: left;font-size: 15px;font-family: STFangsong;} .rightTitles {margin: 0 0;width: 100%;text-align: left;font-size: 15px;font-family: STFangsong;} .rightTabRight {width: 47%;height:100%;display: flex;align-items: center;} th,td {margin: 0;padding: 0;} table {*border-style: solid;*border-color: #333;*border-width: 1px 0 0 1px;font-size: 13px;border-collapse: collapse;} table td,table th {font-family: STFangsong;border-width: 1px;*border-width: 0 1px 1px 0;border-style: solid;border-color: #333;box-sizing: border-box;text-justify: inter-ideograph;} table th {text-align: center;} table td {color: #000;font-weight: bold;font-size: 17px;} .border0 {padding: 0;*border-width: 0;} .border0 table {margin-left: -1px;border-style: hidden;*border-style: solid;border-width: 0;}</style>` // ids.forEach((attachment) => { // }); let url=process.env.VUE_APP_BASE_API+'/'+res.data.url console.log('打印地址',process.env.VUE_APP_BASE_API+'/'+res.data.url) const pdfWindow = window.open(url); pdfWindow.document.head.innerHTML = styleSheet //给打印的内容加上样式 pdfWindow.focus(); pdfWindow.print(); pdfWindow.close(); }) 为什么无法打印

21ad16c13
1个月前
全网
文档
学术
百科
知识库
时间不限
自动
回答简洁模式
深入研究一些

这段代码看起来是用于生成并打印PDF文件的JavaScript代码。从代码中可以看出,你正在尝试通过调用window.open来打开一个新的窗口,并设置其document.head.innerHTML为一个样式字符串,然后调用print()方法来打印这个窗口的内容。如果打印没有成功,可能的原因有:

  1. 样式未正确应用:确保样式字符串styleSheet是正确的,并且没有语法错误。

  2. PDF内容未加载window.open(url)可能没有足够的时间来加载PDF内容。在打印之前,你可能需要等待PDF内容完全加载。

  3. 浏览器安全限制:某些浏览器可能会阻止跨域打印,或者在打开的窗口中执行打印操作。

  4. 打印功能被禁用:用户的浏览器可能禁用了打印功能,或者打印设置不正确。

  5. process.env.VUE_APP_BASE_API未正确设置:确保环境变量VUE_APP_BASE_API已经正确设置,并且拼接后的URL指向的是正确的PDF文件。

  6. PDF文件格式问题:确保PDF文件是有效的,并且浏览器支持打印该格式的文件。

  7. 异步操作问题downloadOneReimbursement(ids)是一个异步操作,如果.then中的代码执行太快,可能在PDF内容加载完成之前就尝试打印。

  8. 缺少文档内容:在设置样式之后,你需要确保将PDF内容添加到新窗口的body中,而不仅仅是head

为了解决这个问题,你可以尝试以下步骤:

  • 确保PDF文件可以通过浏览器直接访问并打印。
  • pdfWindow.document.head.innerHTML = styleSheet之后,添加PDF内容到pdfWindow.document.body
  • 使用pdfWindow.onload事件来确保在PDF内容加载完成后再调用print()方法。
  • 检查浏览器的控制台是否有任何错误信息,并根据错误信息进行调试。

例如,你可以添加一个检查PDF加载的事件监听器:

pdfWindow.onload = function() {
    pdfWindow.document.body.innerHTML = '这里是PDF内容'; // 这里应该是实际的PDF内容
    pdfWindow.print();
};

请注意,直接修改pdfWindow.document.body.innerHTML可能不会有效,因为PDF通常是以二进制格式加载的。你可能需要使用其他方法来将PDF内容嵌入到新窗口中,例如使用<iframe><object>标签。

你觉得结果怎么样?
如何使用JavaScript实现网页打印功能?
JavaScript打印预览不显示样式怎么办?
如何在浏览器中直接打印网页内容?
打印网页时如何应用自定义CSS样式?
如何检查JavaScript打印功能是否正常工作?
如何使用Vue.js实现打印功能?

以上内容由AI搜集生成,仅供参考

在线客服