Вместо того, чтобы объявлять данные формы PDF для заполнения в Express, я хотел бы передать данные формы из моего приложения React в node-pdftk. PDF-файл правильно отображается в браузере с заполненными данными формы, когда я связываюсь с маршрутом / pdf в React:
<a href="http://localhost:8080/pdf">Form-fill PDF File</a>
Express app:
const pdftk = require('node-pdftk');
// Rather than declare form data here in Express,
const formdata = {
'Fill_this_1': 'With this from Express 1',
'Fill this 2': 'With this from Express 2',
'Fill this 3': 'With this from Express 3'
}
app.get('/pdf', (req, res, next) => {
pdftk
.input('./file.pdf')
.fillForm(formdata)
.flatten()
.output()
.then(buf => {
res.type('application/pdf');
res.send(buf);
})
.catch(next);
});
Я бы например, передать данные формы из React через GET или POST:
import React, { useEffect } from 'react';
const showFile = (blob) => {
var newBlob = new Blob([blob], {type: "application/pdf"})
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(newBlob);
return;
}
const data = window.URL.createObjectURL(newBlob);
var link = document.createElement('a');
link.href = data;
link.download="file.pdf";
link.click();
setTimeout(function(){
window.URL.revokeObjectURL(data);
}, 100);
}
function FillPDFForm() {
useEffect(() => {
fillForm();
}, [])
// Trying to pass formdata to node-pdftk (Express) via POST
const fillForm = async () => {
await fetch('http://localhost:8080/pdf', {
method: 'POST',
headers: {
'Content-Type': 'application/pdf'
},
body: JSON.stringify({
'Fill_this_1': 'With this from React 1',
'Fill_this_2': 'With this from React 2',
'Fill_this_3': 'With this from React 3'
})
}).then(res => res.blob())
.then(showFile)
}
return (null);
}
export default FillPDFForm;
В загружаемом PDF-файле не заполнены поля формы. Есть ли у кого-нибудь опыт передачи данных формы заполнения PDF из React в Express?