이 글에서는 Node.js를 사용하여 PDF 페이지를 이미지로 변환하는 방법을 다룹니다. 이는 축소판을 생성하거나 PDF 파일에서 시각적 콘텐츠를 추출하는 데 유용할 수 있습니다. pdfjs-dist 라이브러리를 사용하여 PDF 페이지를 로드 및 렌더링하고 캔버스를 사용하여 이미지 버퍼를 생성합니다.
전제조건
시작하기 전에 필수 패키지를 설치해야 합니다:
npm은 pdfjs-dist 캔버스를 설치합니다.
PDF 페이지를 이미지로 변환하고 로컬에 저장하기 위한 코드:
const fs = require('fs'); const path = require('path'); const pdfjs = require('pdfjs-dist/legacy/build/pdf.js'); const Canvas = require('canvas'); /** * Converts a PDF to images by rendering each page and saving them to a local directory. * * @param {Buffer} pdfBuffer - The PDF file as a buffer. * @param {string} outputDir - The directory where images will be saved. * @returns {Promise} Resolves when all images are saved. */ async function convertPdfToImages(pdfBuffer, outputDir) { try { // Ensure the output directory exists if (!fs.existsSync(outputDir)) { fs.mkdirSync(outputDir, { recursive: true }); } // Load the original PDF using pdf.js const loadingTask = pdfjs.getDocument({ data: pdfBuffer }); const pdfDocument = await loadingTask.promise; // Loop through each page of the PDF for (let i = 1; i } The image as a buffer (JPEG format). */ async function renderPageToImage(page) { // Scale the page to 2x for a higher quality image output const viewport = page.getViewport({ scale: 2.0 }); const canvas = Canvas.createCanvas(viewport.width, viewport.height); const context = canvas.getContext('2d'); const renderContext = { canvasContext: context, viewport: viewport, }; // Render the PDF page to the canvas await page.render(renderContext).promise; // Convert the canvas content to a JPEG image buffer and return it return canvas.toBuffer('image/jpeg'); } // Example usage: // const pdfBuffer = fs.readFileSync('sample.pdf'); // convertPdfToImages(pdfBuffer, './output_images');
코드 설명
const loadingTask = pdfjs.getDocument({ data: pdfBuffer }); const pdfDocument = await loadingTask.promise;
const page = await pdfDocument.getPage(pageNumber); const renderContext = { canvasContext: context, viewport: viewport, }; await page.render(renderContext).promise;
fs.writeFileSync(imagePath, imageBuffer);
결론:
이 접근 방식은 PDF를 이미지로 변환하는 데 효율적으로 작동하므로 PDF 콘텐츠를 처리하거나 시각화할 수 있습니다. 고품질 이미지를 위해 캔버스 크기를 2배로 조정합니다. 이는 필요에 따라 쉽게 조정할 수 있습니다.
도움이 되었으면 좋겠습니다! 요구 사항에 따라 코드를 자유롭게 조정하세요.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3