Как я могу рендерить и отображать PDF для клиента без принудительной загрузки с помощью pipe () - PullRequest
0 голосов
/ 27 февраля 2019

Я делаю запрос API, который отправляет файл PDF в качестве ответа, но при доступе к маршруту файл немедленно принудительно загружается.Я просто хочу отобразить файл PDF внутри клиентского браузера, не загружая его.

exports.print = (req,res) => {
    request("API").on('response', function(response) {
        res.set({
            'Content-Disposition': 'inline; filename=my.pdf',
            'Content-Type': 'application/pdf'
        });
    })
    .pipe(res);
}

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Я проверил следующий код, он отлично работает в браузере Chrome.Попробуйте приведенный ниже код, пожалуйста. (Пожалуйста, установите пакет запросов npm. Вы также можете использовать async и await)

Я получил PDF от внешнего API и сохранил его в "test.pdf", после чего я читаю этот PDFфайл и отправка данных в браузер.

exports.sendPDFFIle=(req,res)=>{
  request=require('request');
  const fs=require('fs');
  request('http://www.africau.edu/images/default/sample.pdf').pipe(fs.createWriteStream('../TestPdf/test.pdf'))

    var data = fs.readFileSync('../TestPdf/test.pdf');
    res.contentType("application/pdf");
    res.send(data);

};

0 голосов
/ 27 февраля 2019

Проверьте https://gist.github.com/adamgibbons/af2de54c011e68a7b85a Ответ zishon89, он должен делать эту работу.

var express = require('express'),
        fs = require('fs'),
        app = express();
    app.get('/', function (req, res) {
        var filePath = "/files/my_pdf_file.pdf";

        fs.readFile(__dirname + filePath , function (err,data){
            res.contentType("application/pdf");
            res.send(data);
        });
    });

    app.listen(3000, function(){
        console.log('Listening on 3000');
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...