> 웹 프론트엔드 > 프런트엔드 Q&A > nodejs를 사용하여 HTML을 PDF로 변환

nodejs를 사용하여 HTML을 PDF로 변환

WBOY
풀어 주다: 2023-05-12 12:28:37
원래의
1519명이 탐색했습니다.

인터넷 기술이 지속적으로 발전함에 따라 더 쉽게 공유하고 다운로드할 수 있도록 웹 콘텐츠를 PDF 형식으로 변환해야 하는 응용 프로그램이 점점 더 많아지고 있습니다. 이 과정에서 Node.js는 HTML 문서를 PDF 형식으로 변환하는 강력한 도구로 사용될 수 있습니다. 이 기사에서는 Node.js를 사용하여 HTML을 PDF로 변환하는 과정을 다룰 것입니다.

  1. 필요한 종속성 설치

시작하기 전에 시스템에 다음 필수 패키지를 설치해야 합니다.

  • Node.js 개발 환경
  • npm - Node.js용 패키지 관리자
  • wkhtmltopdf - 생성하는 도구 웹 페이지의 PDF

Wkhtmltopdf는 WebKit 엔진을 기반으로 하는 명령줄 도구로, HTML 문서를 PDF 파일로 변환할 수 있으며 워터마크, 머리글, 바닥글 및 기타 여러 기능 추가도 지원합니다.

Ubuntu 시스템에서는 다음 명령을 통해 wkhtmltopdf를 설치할 수 있습니다:

sudo apt-get install wkhtmltopdf
로그인 후 복사
  1. Install dependency

다음으로 npm 패키지 관리자를 통해 설치할 수 있는 pdfkit 및 fs 모듈을 설치해야 합니다.

설치하려면 명령줄에 다음 명령을 입력하세요.

npm install pdfkit
로그인 후 복사
npm install fs
로그인 후 복사
  1. 코드 작성

관련 종속성을 설치한 후 JavaScript 코드 작성을 시작할 수 있습니다. "html-to-pdf.js"라는 파일을 만들고 다음 코드를 작성할 수 있습니다.

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
};
로그인 후 복사

이 코드에서는 pdfkit, fs 및 wkhtmltopdf 모듈을 도입하고 generatePDF, writePDF 및 createPDF의 세 가지 함수를 작성했습니다.

generatePDF 기능은 HTML 파일을 PDF 형식으로 변환하는 데 사용됩니다. html, 옵션, 콜백이라는 세 가지 매개변수를 전달해야 합니다.

writePDF 기능은 PDF 문서를 파일 시스템에 쓰는 데 사용됩니다. doc, path 및 callback이라는 세 가지 매개변수를 전달해야 합니다.

createPDF 기능은 전체 프로세스의 제어 센터입니다. generatePDF 및 writePDF 기능을 호출하여 HTML을 PDF로 변환하는 프로세스를 완료할 수 있습니다.

  1. Node.js를 사용하여 HTML을 PDF로 변환

이제 코드 작성이 완료되었으므로 Node.js를 사용하여 HTML을 PDF로 변환할 수 있습니다. 명령줄에 다음 명령을 입력할 수 있습니다:

node html-to-pdf.js
로그인 후 복사

또는 자신의 프로젝트에서 이 모듈을 사용할 수 있습니다:

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);
});
로그인 후 복사

이 예에서는 createPDF 함수를 사용하여 test.html을 test.pdf로 변환합니다. 크기와 여백도 설정됩니다.

  1. 요약

이 기사에서는 Node.js를 사용하여 HTML을 PDF로 변환하는 방법을 소개했습니다. 구체적인 단계에는 종속성 설치, 코드 작성, 변환을 위해 Node.js 사용 등이 포함됩니다. 광범위한 HTML 변환 작업을 처리해야 하는 경우 Node.js를 사용하면 효율적이고 유연하며 확장 가능한 솔루션을 제공할 수 있습니다.

위 내용은 nodejs를 사용하여 HTML을 PDF로 변환의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿