إنشاء وتحرير PDF عبر Open Source JavaScript API

مكتبة JavaScript مفتوحة المصدر لإنشاء ملفات PDF وتعديلها ، أضف الصفحات وانسخها وأدخل الصور إلى PDF عبر JavaScript.

PDF-Lib هي مكتبة JavaScript مفتوحة المصدر تمكن محترفي البرمجيات من تطوير تطبيقات قوية للعمل مع ملفات PDF. المكتبة غنية بالميزات ومصممة للعمل في أي وقت تشغيل JavaScript حديث. لقد تضمن دعمًا لإنشاء ملفات PDF جديدة ، وتحرير مستندات PDF الموجودة ، وإنشاء نماذج ، وإضافة صفحات PDF أو إزالتها ، ونسخ الصفحات بين ملفات PDF ، ورسم النص والصور ، وقياس عرض النص وارتفاعه ، وتقسيم المستندات ودمجها ، وقراءة & قم بتعيين بيانات تعريف PDF ، ارسم رسومات متجهية وغيرها الكثير.

تمت كتابة المكتبة بتنسيق Typescript وتم تجميعها في JavaScript خالص دون أي تبعيات أخرى. كان أحد الأغراض الرائعة لإنشاء مكتبة PDF-Lib هو معالجة افتقار نظام JavaScript البيئي إلى الدعم القوي لتحرير PDF أو تعديله. هناك العديد من مكتبات JavaScript الجيدة التي تدعم إنشاء ملفات PDF ولكن القليل منها يتضمن دعمًا قويًا لتعديل PDF. يتضمن PDF-Lib دعمًا كاملاً لتعديل PDF بالإضافة إلى العمل في جميع بيئات JavaScript (وليس فقط Node أو المستعرض).

Previous Next

الشروع في العمل مع PDF-Lib

الطريقة الموصى بها والأسهل لبدء وتثبيت PDF-Lib هي عبر npm وكذلك في الغزل ، فيما يلي الأمر.

تثبيت PDF-Lib عبر npm

 npm install --save pdf-lib 

تثبيت PDF-Lib عبر الغزل

 yarn add pdf-lib 

إنشاء وتعديل مستندات PDF عبر JavaScript

تضمنت مكتبة PDF-Lib مفتوحة المصدر وظائف كاملة لإنشاء مستندات PDF بالإضافة إلى التعديل. يمكن لمطوري البرامج إنشاء مستند PDF جديد من البداية باستخدام سطرين فقط من كود JavaScript داخل تطبيقاتهم الخاصة. بمجرد أن يتمكن المطورون الذين تم إنشاؤهم من إدراج نص أو رسم صور أو رسومات متجهة ، وتضمين خطوطهم ، ونسخ الصفحات وتضمينها من ملفات PDF الأخرى ، وتطبيق التنسيق والأنماط التي يختارونها ، وغير ذلك الكثير.

كيفية إنشاء مستندات PDF عبر JavaScript

import { PDFDocument, StandardFonts, rgb } from 'pdf-lib'
// Create a new PDFDocument
const pdfDoc = await PDFDocument.create()
// Embed the Times Roman font
const timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman)
// Add a blank page to the document
const page = pdfDoc.addPage()
// Get the width and height of the page
const { width, height } = page.getSize()
// Draw a string of text toward the top of the page
const fontSize = 30
page.drawText('Creating PDFs in JavaScript is awesome!', {
  x: 50,
  y: height - 4 * fontSize,
  size: fontSize,
  font: timesRomanFont,
  color: rgb(0, 0.53, 0.71),
})
// Serialize the PDFDocument to bytes (a Uint8Array)
const pdfBytes = await pdfDoc.save()

انسخ الصفحات بين مستندات PDF عبر مكتبة JS

غالبًا ما يكون من المفيد جدًا استخدام صفحة موجودة بدلاً من إنشاء صفحة جديدة داخل مستند PDF. تتيح مكتبة PDF-Lib مفتوحة المصدر لمبرمجي الكمبيوتر نسخ الصفحات من مستندات PDF المختلفة وإضافتها إلى مستندات PDF المطلوبة دون أي تبعيات خارجية. أولاً ، تحتاج إلى تحميل كلا ملفي PDF ، بعد ذلك ، يمكنك استخدام الأمر copyPages () لنسخ الصفحات المطلوبة ، ثم استخدام الأمر addPage () لإضافة الصفحة في الموقع المطلوب داخل مستندات PDF.

أضف نصًا إلى ملف PDF الحالي باستخدام JavaScript

import { PDFDocument } from 'pdf-lib'
// Create a new PDFDocument
const pdfDoc = await PDFDocument.create()
const firstDonorPdfBytes = ...
const secondDonorPdfBytes = ...
// Load a PDFDocument from each of the existing PDFs
const firstDonorPdfDoc = await PDFDocument.load(firstDonorPdfBytes)
const secondDonorPdfDoc = await PDFDocument.load(secondDonorPdfBytes)
// Copy the 1st page from the first donor document, and
// the 743rd page from the second donor document
const [firstDonorPage] = await pdfDoc.copyPages(firstDonorPdfDoc, [0])
const [secondDonorPage] = await pdfDoc.copyPages(secondDonorPdfDoc, [742])
// Add the first copied page
pdfDoc.addPage(firstDonorPage)
// Insert the second copied page to index 0, so it will be the
// first page in `pdfDoc`
pdfDoc.insertPage(0, secondDonorPage)
// Serialize the PDFDocument to bytes (a Uint8Array)
const pdfBytes = await pdfDoc.save()

تحليل وقراءة البيانات الوصفية من ملفات PDF

تدعم مكتبة PDF-Lib بشكل كامل الوصول إلى البيانات الوصفية لمستندات PDF وقراءتها. تعد البيانات الوصفية جزءًا مهمًا جدًا من مستندات PDF وقد تضمنت معلومات مهمة جدًا حول ملف PDF ومحتوياته مثل العنوان والموضوع والمؤلف ومعلومات حقوق النشر والمنشئ وتاريخ الإنشاء أو التعديل وما إلى ذلك. باستخدام مطوري برامج مكتبة PDF-Lib ، يمكنهم بسهولة تحليل واستخراج البيانات الوصفية من مستند PDF ببضعة سطرين فقط من كود JavaScript.

أضف صورة إلى ملف PDF باستخدام JavaScript


import { PDFDocument, StandardFonts } from 'pdf-lib'
// Create a new PDFDocument
const pdfDoc = await PDFDocument.create()
// Embed the Times Roman font
const timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman)
// Add a page and draw some text on it
const page = pdfDoc.addPage([500, 600])
page.setFont(timesRomanFont)
page.drawText('The Life of an Egg', { x: 60, y: 500, size: 50 })
page.drawText('An Epic Tale of Woe', { x: 125, y: 460, size: 25 })
// Set all available metadata fields on the PDFDocument. Note that these fields
// are visible in the "Document Properties" section of most PDF readers.
pdfDoc.setTitle('🥚 The Life of an Egg 🍳')
pdfDoc.setAuthor('Humpty Dumpty')
pdfDoc.setSubject('📘 An Epic Tale of Woe 📖')
pdfDoc.setKeywords(['eggs', 'wall', 'fall', 'king', 'horses', 'men'])
pdfDoc.setProducer('PDF App 9000 🤖')
pdfDoc.setCreator('pdf-lib (https://github.com/Hopding/pdf-lib)')
pdfDoc.setCreationDate(new Date('2018-06-24T01:58:37.228Z'))
pdfDoc.setModificationDate(new Date('2019-12-21T07:00:11.000Z'))
// Serialize the PDFDocument to bytes (a Uint8Array)
const pdfBytes = await pdfDoc.save()

أضف المرفقات إلى PDF عبر JavaScript API

نحتاج أحيانًا إلى تقديم معلومات أكثر تفصيلاً حول ملف PDF ، حتى نتمكن من إرفاق ملف آخر بهذا الملف. ستتمثل فائدة هذا الملف الآن في أن المرفق سينتقل مع ملف PDF إذا قمت بنقله إلى موقع مختلف. توفر مكتبة PDF-Lib مفتوحة المصدر لمطوري البرامج القدرة على إرفاق ملفات أخرى بمستندات PDF الخاصة بهم داخل تطبيقات JavaScript الخاصة بهم. من الممكن إرفاق أنواع مختلفة من الملفات إلى ملف PDF ، مثل Microsoft Word أو Excel أو الصور أو الفيديو أو حتى ملفات PDF الأخرى.

أضف المرفقات إلى PDF باستخدام JavaScript

const jpgAttachmentBytes = ...
const pdfAttachmentBytes = ...
// Create a new PDFDocument
const pdfDoc = await PDFDocument.create()
// Add the JPG attachment
await pdfDoc.attach(jpgAttachmentBytes, 'cat_riding_unicorn.jpg', {
  mimeType: 'image/jpeg',
  creationDate: new Date('2019/12/01'),
  modificationDate: new Date('2020/04/19'),
})
// Add the PDF attachment
await pdfDoc.attach(pdfAttachmentBytes, 'us_constitution.pdf', {
  mimeType: 'application/pdf',
  creationDate: new Date('1787/09/17'),
  modificationDate: new Date('1992/05/07'),
})
// Add a page with some text
const page = pdfDoc.addPage();
page.drawText('This PDF has two attachments', { x: 135, y: 415 })
// Serialize the PDFDocument to bytes (a Uint8Array)
const pdfBytes = await pdfDoc.save()
 عربي