"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحويل صفحات PDF إلى صور في Node.js

كيفية تحويل صفحات PDF إلى صور في Node.js

تم النشر بتاريخ 2024-11-07
تصفح:506

How to Convert PDF Pages to Images in Node.js

في هذه المقالة، سنغطي كيفية تحويل صفحات PDF إلى صور باستخدام Node.js. يمكن أن يكون هذا مفيدًا لإنشاء صور مصغرة أو استخراج محتوى مرئي من ملفات 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');

شرح الكود

  1. تحميل ملف PDF: نستخدم pdfjs-dist لتحميل ملف PDF من المخزن المؤقت.
const loadingTask = pdfjs.getDocument({ data: pdfBuffer });
const pdfDocument = await loadingTask.promise;
  1. عرض كل صفحة: بالنسبة لكل صفحة في ملف PDF، نقوم بعرضها على لوحة باستخدام getPage وطرق العرض من pdfjs-dist.
const page = await pdfDocument.getPage(pageNumber);
const renderContext = {
  canvasContext: context,
  viewport: viewport,
};
await page.render(renderContext).promise;
  1. حفظ الصورة محليًا: بمجرد عرض الصفحة على اللوحة القماشية، نقوم بحفظ المخزن المؤقت للصورة بتنسيق JPEG باستخدام وحدة Node.js fs.
fs.writeFileSync(imagePath, imageBuffer);

خاتمة:
يعمل هذا الأسلوب بكفاءة لتحويل ملفات PDF إلى صور، مما يسمح لك بمعالجة محتوى PDF أو تصوره. للحصول على صور عالية الجودة، نقوم بقياس حجم اللوحة القماشية إلى 2x. يمكن تعديل ذلك بسهولة بناءً على احتياجاتك.

آمل أن يساعد هذا! لا تتردد في تعديل الكود حسب متطلباتك.

بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/yashnarkhedkar/how-to-convert-pdf-pages-to-emages-in-nodejs-2a6k؟1 إذا كان هناك أي انتهاك ، يرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3