"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Node.js में पीडीएफ पेजों को छवियों में कैसे बदलें

Node.js में पीडीएफ पेजों को छवियों में कैसे बदलें

2024-11-07 को प्रकाशित
ब्राउज़ करें:436

How to Convert PDF Pages to Images in Node.js

इस लेख में, हम बताएंगे कि Node.js का उपयोग करके पीडीएफ पृष्ठों को छवियों में कैसे परिवर्तित किया जाए। यह थंबनेल बनाने या पीडीएफ फाइलों से दृश्य सामग्री निकालने के लिए उपयोगी हो सकता है। हम पीडीएफ पृष्ठों को लोड और रेंडर करने के लिए पीडीएफजेएस-डिस्ट लाइब्रेरी का उपयोग करेंगे, और छवि बफ़र्स बनाने के लिए कैनवास का उपयोग करेंगे।

आवश्यकताएँ
आरंभ करने से पहले, आपको आवश्यक पैकेज स्थापित करने होंगे:

एनपीएम पीडीएफजेएस-डिस्ट कैनवास स्थापित करें

पीडीएफ पेजों को छवियों में बदलने और स्थानीय रूप से सहेजने के लिए कोड:

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');

कोड स्पष्टीकरण

  1. पीडीएफ लोड करें: हम बफर से पीडीएफ फाइल लोड करने के लिए पीडीएफजेएस-डिस्ट का उपयोग करते हैं।
const loadingTask = pdfjs.getDocument({ data: pdfBuffer });
const pdfDocument = await loadingTask.promise;
  1. प्रत्येक पृष्ठ को प्रस्तुत करें: पीडीएफ में प्रत्येक पृष्ठ के लिए, हम इसे getPage का उपयोग करके एक कैनवास पर प्रस्तुत करते हैं और पीडीएफजे-डिस्ट से रेंडर विधियों को प्रस्तुत करते हैं।
const page = await pdfDocument.getPage(pageNumber);
const renderContext = {
  canvasContext: context,
  viewport: viewport,
};
await page.render(renderContext).promise;
  1. छवि को स्थानीय रूप से सहेजें: एक बार जब पृष्ठ कैनवास पर प्रस्तुत हो जाता है, तो हम नोड.जेएस के एफएस मॉड्यूल का उपयोग करके जेपीईजी प्रारूप में छवि बफर को सहेजते हैं।
fs.writeFileSync(imagePath, imageBuffer);

निष्कर्ष:
यह दृष्टिकोण पीडीएफ को छवियों में परिवर्तित करने के लिए कुशलतापूर्वक काम करता है, जिससे आप पीडीएफ सामग्री को संसाधित या विज़ुअलाइज़ कर सकते हैं। उच्च-गुणवत्ता वाली छवियों के लिए, हम कैनवास को 2x तक स्केल करते हैं। इसे आपकी आवश्यकताओं के आधार पर आसानी से समायोजित किया जा सकता है।

आशा है यह मदद करेगा! अपनी आवश्यकताओं के अनुसार कोड को अनुकूलित करने के लिए स्वतंत्र महसूस करें।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/yashnarkhedkar/how-to-convert-pdf-pages-to-images-in-nodejs-2a6k?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163.com पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3