Как преобразовать HTML в PDF и предоставить общий доступ к PDF-файлу с помощью expo react native share (ios) с помощью printToFileAsync

#javascript #node.js #reactjs #react-native #axios

Вопрос:

Я могу сгенерировать pdfBuffer, отправив HTML на серверную часть, но получение данных и совместное использование их с expo share — вот где я застрял. Очень признателен за любую помощь.

Библиотека, которую я использую, это

 var pdf = require('html-pdf')
 

https://github.com/marcbachmann/node-html-pdf

Я пробовал следующий код и искал Google в течение 4 дней без каких-либо результатов.
интерфейс реагирует на собственный код

   const createPdf = () => {
    const html = insertHtml(orders)

    axios('http://573f-98-14-177-227.ngrok.io/api/createPdf', {
      method: 'post',
      data: { html },
      responseType: 'json',
    })
      .then((res) => {
        console.log('pdf ', res.data)
        sharePdf(res.data)
      })
      .catch(function (error) {
        console.log('err ', error)
      })

    Alert.alert('Ordered Success', 'press ok to save a copy', [
      {
        text: 'Ok',
        onPress: () => {},
        style: 'cancel',
      },
      {
        text: 'Cancel',
        style: 'cancel',
      },
    ])
    props.resetOrder()
    setOrders([])
  } 

Серверная часть узла для создания pdf

 router.post('/createPdf', (req, res) => {

  const {html} = req.body

  pdf.create(html).toBuffer((err, buffer) => {
    res.setHeader('Content-Length', buffer.length)
    res.setHeader('Content-type', 'application/pdf')
    var pdfBuffer = new Buffer.from(buffer)
    res.send(pdfBuffer)
    console.log('buffer ', pdfBuffer)
  })
  pdf.create(html).toStream((err, pdfStream) => {
    if (err) {
      console.log(err)
      return res.sendStatus(500)
    } else {
      res.statusCode = 200
      pdfStream.on('end', () => {
        return res.end()
      })
      pdfStream.pipe(res)
    }
  })
}) 

Комментарии:

1. Можете ли вы получить ответ в формате PDF при попытке использования postman?

2. Я могу получить ответ в формате pdf, но я не знаю, как работать с ответом с помощью интерфейса react native.