Rumah  >  Artikel  >  hujung hadapan web  >  Tukar html kepada pdf menggunakan nodejs

Tukar html kepada pdf menggunakan nodejs

WBOY
WBOYasal
2023-05-12 12:28:371414semak imbas

Dengan perkembangan teknologi Internet yang berterusan, semakin banyak aplikasi perlu menukar kandungan web kepada format PDF untuk memudahkan perkongsian dan muat turun. Dalam proses ini, Node.js boleh digunakan sebagai alat yang berkuasa untuk menukar dokumen HTML kepada format PDF. Artikel ini akan merangkumi proses menukar HTML kepada PDF menggunakan Node.js.

  1. Pasang kebergantungan yang diperlukan

Sebelum anda bermula, anda perlu memasang pakej yang diperlukan berikut dalam sistem anda:

  • Pembangunan Node persekitaran
  • npm - Pengurus pakej Node.js
  • wkhtmltopdf - alat untuk menjana PDF daripada halaman web

Wkhtmltopdf ialah arahan berdasarkan enjin WebKit Ia adalah alat dalam talian yang boleh menukar dokumen html ke dalam fail pdf Ia juga menyokong penambahan tera air, pengepala dan pengaki dan banyak ciri lain.

Di bawah sistem Ubuntu, anda boleh memasang wkhtmltopdf melalui arahan berikut:

sudo apt-get install wkhtmltopdf
  1. Pasang kebergantungan

Seterusnya, anda perlu memasang modul pdfkit dan fs , kedua-duanya boleh dipasang melalui pengurus pakej npm.

Masukkan arahan berikut pada baris arahan untuk memasang:

npm install pdfkit
npm install fs
  1. Tulis kod

Selepas memasang dependensi yang berkaitan, anda boleh mula menulis kod JavaScript . Anda boleh mencipta fail bernama "html-to-pdf.js" dan menulis kod berikut:

const pdfkit = require('pdfkit');
const fs = require('fs');
const wkhtmltopdf = require('wkhtmltopdf');

// 生成 PDF
function generatePDF(html, options, callback) {
    // 创建文件流
    const inputStream = fs.createReadStream(html);

    // 调用 wkhtmltopdf
    wkhtmltopdf(inputStream, options, (error, stream) => {
        if (error) {
            callback(error);
        } else {
            callback(null, stream);
        }
    });
}

// 写 PDF
function writePDF(doc, path, callback) {
    const writeStream = fs.createWriteStream(path);

    writeStream.on('error', (error) => {
        callback(error);
    });

    doc.pipe(writeStream);

    doc.end();
}

// 创建 PDF
function createPDF(html, path, options, callback) {
    const doc = new pdfkit();

    generatePDF(html, options, (error, stream) => {
        if (error) {
            callback(error);
        } else {
            doc.on('pageAdded', () => {
                doc.image(stream, {
                    fit: [doc.page.width - 100, doc.page.height - 100],
                    align: 'center',
                    valign: 'center'
                });
            });

            doc.pipe(fs.createWriteStream(path));

            doc.end();

            callback(null, path);
        }
    });
}

// 导出模块
module.exports = {
    createPDF,
    writePDF,
    generatePDF
};

Dalam kod ini, kami memperkenalkan modul pdfkit, fs dan wkhtmltopdf dan menulis tiga Fungsi: generatePDF, writePDF dan createPDF.

Fungsi generatePDF digunakan untuk menukar fail HTML kepada format PDF. Ia memerlukan lulus tiga parameter: html, pilihan dan panggil balik.

Fungsi writePDF digunakan untuk menulis dokumen PDF ke sistem fail. Ia memerlukan lulus tiga parameter: dokumen, laluan dan panggil balik.

Fungsi createPDF ialah pusat kawalan keseluruhan proses Ia boleh memanggil fungsi generatePDF dan writePDF untuk melengkapkan proses menukar HTML kepada PDF.

  1. Tukar HTML kepada PDF menggunakan Node.js

Sekarang anda telah selesai menulis kod, anda boleh mula menukar HTML kepada PDF menggunakan Node.js. Anda boleh memasukkan arahan berikut dalam baris arahan:

node html-to-pdf.js

Sebagai alternatif, anda boleh menggunakan modul ini dalam projek anda sendiri:

const htmlToPdf = require('./html-to-pdf');

htmlToPdf.createPDF('test.html', 'test.pdf', {
   pageSize: 'letter',
   marginTop: '0mm',
   marginBottom: '0mm',
   marginLeft: '0mm',
   marginRight: '0mm'
}, (err, result) => {
   if (err) {
      console.error(err);
      return;
   }
   console.log('File saved to: ' + result);
});

Dalam contoh ini, kami menggunakan fungsi createPDF untuk menguji .html ditukar kepada test.pdf dengan saiz halaman dan margin ditetapkan.

  1. Ringkasan

Dalam artikel ini, kami memperkenalkan cara menggunakan Node.js untuk menukar HTML kepada PDF Langkah khusus termasuk memasang kebergantungan, menulis kod dan menggunakan Node .js untuk penukaran dan banyak lagi. Jika anda perlu mengendalikan tugas penukaran HTML yang meluas, menggunakan Node.js boleh memberi anda penyelesaian yang cekap, fleksibel dan berskala.

Atas ialah kandungan terperinci Tukar html kepada pdf menggunakan nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn