#javascript #node.js #pdf #puppeteer
#javascript #node.js #PDF #кукловод
Вопрос:
Я создал класс, который преобразует HTML-файл в pdf. Ниже приведен код
class Invoice {
async html() {
try {
const data = {
your: 'data'
}
console.log("Current directory:", __dirname);
const templatePath = Path.resolve('index.html')
console.log(templatePath)
const content = await ReadFile(templatePath, 'utf8')
// compile and render the template with handlebars
const template = Handlebars.compile(content)
return template(data)
} catch (error) {
throw new Error('Cannot create invoice HTML template.')
}
}
async pdf() {
const html = await this.html()
console.log(html)
const browser = await Puppeteer.launch()
const page = await browser.newPage()
await page.setContent(html)
return page.pdf()
}
}
Но это считывает HTML-файл, расположенный на диске. Но я хочу создать pdf-файл HTML-формы в html-файле.
Пожалуйста, скажите мне, как я могу это сделать?
Комментарии:
1.
an HTML form in an html file
вы имеете в виду, что пользователь заполняет форму в браузере и отправляет ее?2. да. после заполнения я могу сгенерировать из него PDF
3. Вместо того, чтобы жестко кодировать свой класс для использования
this.html()
, сделайте его параметром функции pdf(). Затем отправьте данные формы на сервер, создайте html и используйте существующую функцию.4. можете ли вы сказать мне, как я могу это сделать?
5. Я в основном только что сделал, так что вам нужно быть более конкретным. Что именно вы хотели бы знать?
const data
В вашем коде есть a; все, что вам нужно сделать, это использовать вместо этого отправленные данные формы.
Ответ №1:
Вы пробовали jsPDF? Согласно их веб-сайту, jsPDF является ведущим клиентским решением HTML5 для создания PDF-файлов. Идеально подходит для билетов на мероприятия, отчетов и сертификатов.