Как добавить интерфейсную кнопку для запуска API-интерфейса node.js в pdfcrowd для создания PDF-файлов - PullRequest
1 голос
/ 18 июня 2019

У меня есть приложение MERN-stack, и я пытаюсь использовать pdfcrowd , чтобы позволить пользователям моего приложения загружать PDF-файлы страниц моего приложения.

В моем файле Node APIs index.js я добавил пример из документации pdfcrowd:

var pdfcrowd = require("pdfcrowd");

// create the API client instance
var client = new pdfcrowd.HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

// run the conversion and write the result to a file
client.convertUrlToFile(
    "http://www.example.com",
    "example.pdf",
    function(err, fileName) {
        if (err) return console.error("Pdfcrowd Error: " + err);
        console.log("Success: the file was created " + fileName);
    });

... и когда я запускаю node index.js со своего терминала до перезапускаемого узла, файл pdf успешно создан. Однако вместо того, чтобы создавать файл PDF в node index.js, я хотел бы иметь кнопку на внешнем интерфейсе моего приложения (в моем коде React), которая при нажатии генерирует PDF.

Я никогда раньше не использовал pdfcrowd, и я новичок в любом pdf-поколении в реакции или узле, и я не уверен, как это сделать. Например, как должна выглядеть функция обработчика onClick для кнопки, чтобы можно было вызывать код pdfcrowd на сервере для генерации файлов.

Редактировать: Я думаю, что я буду использовать функцию convertFileToFile вместо функции convertUrlToFile, так как я хотел бы использовать локальные маршруты в своем приложении.

Edit2: Я предполагаю, что convertFileToFile использует маршруты локальных узлов, а не мои маршруты реагирования. Поэтому я не уверен, как расширить функциональность этого кода для создания страниц PDF из множества страниц моего приложения.

Любая помощь в этом с благодарностью!

1 Ответ

0 голосов
/ 18 июня 2019

Попробуйте что-то вроде этого:

Поместите в ваш html кнопку, которая будет вызывать бэкэнд-функцию вашего узла и при получении ответа обратно в front-end:

var fileName="MyPdfFile.pdf";
var blob = new Blob([responseData], 'application/pdf');
const tempLink = document.createElement('a');
tempLink.style.display = 'none';
tempLink.href = window.URL.createObjectURL(blob);
tempLink.setAttribute('download', fileName);
tempLink.click();

Будьте осторожны стип данных ответа и использовать правильный формат при использовании Blob.Вы также можете использовать библиотеку типа «blob-util», которая предоставляет множество функций по умолчанию для преобразования данных.Я использовал его для преобразования моих данных из base64 String в blob.

...