0

我想打印一个从 router.js的 GET 请求中获得的 pdf 文件

router.get('/fetch-pdf',(req,res) => {
  res.sendFile(`${__dirname}/result.pdf`)
})

我的反应组件就像

应用程序.js

import React from 'react'
import axios from 'axios'
const App = () => {
  handleClick() {
    axios.get('/fetch-pdf').then((res) => {
      // someway to print
    })
  }
  return(
    <button onClick={() => handleClick()}>Click</button>
  )
}
export default APp
4

1 回答 1

2

我假设您将根据问题标签使用 print.js。该库接受 base64 数据,因此,您可以将其传递给printJS函数。

这是从 axios 响应数据中获取 base64 并传递到 lib 的一种方法:

axios.get('/fetch-pdf', {
    responseType: 'arraybuffer'
}).then(res => {
  const buffer = Buffer.from(response.data, 'base64');

  printJS({printable: buffer, type: 'pdf', base64: true})
})

Axios 对 base64 ref的响应。

print.js 库在缓存 pdf 文件时执行相同的操作,但是它在没有 axios 的情况下执行此操作。如果有兴趣,可以在这里查看 lib 代码: https ://github.com/crabbly/Print.js/blob/master/src/js/pdf.js

于 2020-09-26T16:53:43.100 回答