بہت سی پی ڈی ایف دستاویزات میں رنگین چارٹس، پیشکشیں، مارکیٹنگ کا مواد، اسکین شدہ صفحات یا گرافکس ہوتے ہیں جو ہمیشہ پرنٹنگ یا آرکائیو کرنے کے لیے موزوں نہیں ہوتے ہیں۔
کچھ معاملات میں، کسی دستاویز کو گرے اسکیل میں تبدیل کرنے سے خلفشار کو کم کیا جا سکتا ہے، پرنٹ کے لیے تیار ورژن بنایا جا سکتا ہے، پرنٹنگ کی لاگت کم ہو سکتی ہے، یا بلیک اینڈ وائٹ اشاعت کے لیے فائل کو تیار کیا جا سکتا ہے۔
پی ڈی ایف ٹو گرے اسکیل کنورٹر اس عمل کو خودکار کرتا ہے۔ ہر صفحہ کو دستی طور پر ایڈٹ کرنے کے بجائے، صارف پی ڈی ایف اپ لوڈ کر سکتے ہیں، گرے اسکیل کنورژن کو لاگو کرنے کا طریقہ منتخب کر سکتے ہیں، نتائج کا پیش نظارہ کر سکتے ہیں، اور براؤزر میں نئی تخلیق شدہ دستاویز کو ڈاؤن لوڈ کر سکتے ہیں۔
اس ٹیوٹوریل میں، آپ جاوا اسکرپٹ کو براؤزر پر مبنی پی ڈی ایف ٹو گرے اسکیل کنورٹر لکھنے کے لیے استعمال کریں گے۔ صارف پی ڈی ایف اپ لوڈ کر سکتے ہیں، تمام صفحات کا جائزہ لے سکتے ہیں، گرے اسکیل کی شدت کو ایڈجسٹ کر سکتے ہیں، متعدد تبادلوں کے طریقوں میں سے انتخاب کر سکتے ہیں، کارروائی کرنے کے لیے صفحات منتخب کر سکتے ہیں، گرے اسکیل پی ڈی ایف بنا سکتے ہیں، حتمی نتیجہ کا جائزہ لے سکتے ہیں، آؤٹ پٹ فائل کا نام تبدیل کر سکتے ہیں، اور دستاویز کو کسی بیرونی سرور پر اپ لوڈ کیے بغیر ڈاؤن لوڈ کر سکتے ہیں۔
ہم PDF صفحات کو رینڈر کرنے کے لیے PDF.js، تصویری پکسلز میں ہیرا پھیری کے لیے HTML Canvas API، اور حتمی ڈاؤن لوڈ کے قابل PDF بنانے کے لیے PDF-lib کا استعمال کرتے ہیں۔
اس ٹیوٹوریل کے اختتام تک، آپ کے پاس ایک مکمل کلائنٹ سائیڈ پی ڈی ایف پروسیسنگ ایپلی کیشن ہوگی جو آل ان ون ٹولز سے دستیاب ہے۔
انڈیکس
یہ پی ڈی ایف ٹو گرے اسکیل کنورٹر کیا کرتا ہے اور یہ کیسے کام کرتا ہے؟
PDF to Grayscale Converter دستاویز کے لے آؤٹ، صفحہ کے سائز، ٹیکسٹ ریپنگ، اور امیجز کو محفوظ رکھتے ہوئے رنگین PDF صفحات کو گرے اسکیل میں تبدیل کرتا ہے۔ مواد کو ہٹانے کے بجائے، یہ ہر پکسل کے رنگ کی دوبارہ گنتی کرتا ہے، جس کی وجہ سے پورا صفحہ گرے اسکیل میں ظاہر ہوتا ہے۔
یہ پرنٹر کے موافق دستاویزات بنانے، رنگین مداخلت کو کم کرنے، سیاہ اور سفید پرنٹنگ کے لیے فائلوں کی تیاری، اسکین شدہ دستاویزات کی مستقل مزاجی کو بہتر بنانے، اور جائزے اور آرکائیو کرنے کے مقاصد کے لیے سیاہ اور سفید ورژن بنانے کے لیے مفید ہے۔
اس پروجیکٹ میں، صارف پی ڈی ایف اپ لوڈ کر سکتے ہیں، تمام صفحات کو براؤز کر سکتے ہیں، گرے اسکیل کی شدت کو ایڈجسٹ کر سکتے ہیں، مختلف تبادلوں کے طریقوں میں سے انتخاب کر سکتے ہیں، فیصلہ کر سکتے ہیں کہ آیا تمام صفحات کو تبدیل کرنا ہے یا صرف منتخب کردہ صفحات، نئی گرے اسکیل پی ڈی ایف بنا سکتے ہیں، تیار شدہ دستاویز کا پیش نظارہ کر سکتے ہیں، آؤٹ پٹ فائل کا نام تبدیل کر سکتے ہیں، اور اسے براہ راست براؤزر سے ڈاؤن لوڈ کر سکتے ہیں۔
پردے کے پیچھے، PDF.js ہر PDF صفحہ کو HTML کینوس پر پیش کرتا ہے۔ جب صفحہ رینڈر کیا جاتا ہے، تو JavaScript ہر پکسل کی RGB قدروں کو پڑھتا ہے اور luminance فارمولے کا استعمال کرتے ہوئے گرے اسکیل ویلیو کا حساب لگاتا ہے۔ PDF-lib تمام پروسیس شدہ صفحات کو ایک نئی PDF میں جمع کرنے سے پہلے اپ ڈیٹ شدہ پکسلز کینوس پر واپس لکھے جاتے ہیں۔
ایک عام پکسل میں چار قدریں ہوتی ہیں:
const pixel = {
red: 180,
green: 95,
blue: 40,
alpha: 255
};
اس پکسل کو گرے اسکیل میں تبدیل کرنے کے لیے، JavaScript ایک ہی چمکیلی قدر کا حساب لگاتا ہے اور اسے سرخ، سبز اور نیلے چینلز پر یکساں طور پر لاگو کرتا ہے۔
const gray = 0.299 * red + 0.587 * green + 0.114 * blue;
نتیجے میں پکسلز ہیں:
pixel.red = gray;
pixel.green = gray;
pixel.blue = gray;
تمام منتخب صفحات پر ہر پکسل کے لیے اس عمل کو دہرانے سے دستاویز کی مجموعی ساخت کو برقرار رکھتے ہوئے اصل پی ڈی ایف کا ایک نیا گرے اسکیل ورژن بنتا ہے۔
پروجیکٹ کی ترتیبات
تبادلوں کی منطق لکھنے سے پہلے، آئیے ایک سادہ پروجیکٹ ڈھانچہ بناتے ہیں۔
ہم PDF.js، Canvas API، اور PDF-lib کے ساتھ HTML، CSS، اور JavaScript کا استعمال کرتے ہوئے ہر چیز بناتے ہیں۔
ہمارے منصوبے کا ڈھانچہ مندرجہ ذیل ہے:
pdf-to-grayscale/
│── index.html
│── style.css
│── script.js
│── pdf.worker.min.js
│── assets/
ایچ ٹی ایم ایل، اسٹائلز اور جاوا اسکرپٹ کو الگ رکھنے سے آپ کے پروجیکٹ کو برقرار رکھنا آسان ہوجاتا ہے کیونکہ مزید پی ڈی ایف خصوصیات شامل کی جاتی ہیں۔
استعمال شدہ لائبریریاں
پی ڈی ایف ٹو گرے اسکیل کنورٹر تین براؤزر ٹیکنالوجیز کا استعمال کرتا ہے جو پی ڈی ایف صفحات کو رینڈر کرنے، تصویری پکسلز پر کارروائی کرنے اور ایک نئی ڈاؤن لوڈ کے قابل دستاویز بنانے کے لیے مل کر کام کرتی ہے۔
PDF.js پی ڈی ایف صفحات کو براہ راست اپنے براؤزر میں رینڈر کریں۔
کہ HTML کینوس API ہر پکسل تک رسائی فراہم کرتا ہے تاکہ جاوا اسکرپٹ رنگ کو گرے اسکیل میں تبدیل کر سکے۔
PDF-lib تمام منتخب صفحات پر کارروائی کے بعد، حتمی پی ڈی ایف تیار ہو جاتی ہے۔
اپنی درخواست لوڈ کرنے سے پہلے مطلوبہ لائبریریاں شامل کریں۔
PDF.js ورکر کو کنفیگر کریں۔
pdfjsLib.GlobalWorkerOptions.workerSrc = "https://www.freecodecamp.org/news/build-pdf-to-grayscale-converter-javascript/pdf.worker.min.js";
کارکن آپ کو براؤزر انٹرفیس کو منجمد کیے بغیر پس منظر میں پی ڈی ایف رینڈرنگ کرنے کی اجازت دیتے ہیں۔
ایک HTML لے آؤٹ بنائیں
درخواست کو چار اہم حصوں میں تقسیم کیا گیا ہے:
-
اپ لوڈ کے علاقے
-
پی ڈی ایف پیش نظارہ
-
تبادلوں کی ترتیبات
-
سیکشن ڈاؤن لوڈ کریں۔
صفحہ کا بنیادی ڈھانچہ بنائیں۔
جب صفحہ پہلی بار لوڈ ہوتا ہے، صرف اپ لوڈ کا علاقہ نظر آتا ہے۔ ایک بار پی ڈی ایف کامیابی کے ساتھ کھلنے کے بعد، باقی حصے ظاہر ہوں گے۔
کلیدی عناصر کو منتخب کریں۔
ان عناصر کے حوالہ جات کو اسٹور کرتا ہے جو پوری درخواست میں استعمال ہوں گے۔
const uploadSection = document.getElementById("uploadSection");
const previewSection = document.getElementById("previewSection");
const settingsSection = document.getElementById("settingsSection");
const pdfCanvas = document.getElementById("pdfCanvas");
یہ حوالہ جات صارفین کے لیے تبادلوں کے عمل سے گزرتے ہوئے انٹرفیس کو اپ ڈیٹ کرنا آسان بناتے ہیں۔
پی ڈی ایف اپ لوڈ اور پیش نظارہ کریں۔
اپ لوڈ ایریا ڈریگ اینڈ ڈراپ اور مینوئل فائل سلیکشن دونوں کی اجازت دیتا ہے۔
جب آپ کوئی فائل منتخب کرتے ہیں، تو پہلے یہ یقینی بنائیں کہ یہ پی ڈی ایف ہے۔
async function uploadPdf(file) {
if (!file || file.type !== "application/pdf") {
alert("Please select a PDF file.");
return;
}
await loadPdf(file);
}
اگر توثیق کامیاب ہو جاتی ہے، تو دستاویز کو پروسیسنگ کے لیے میموری میں لوڈ کر دیا جاتا ہے۔
پی ڈی ایف لوڈ کریں۔
اپ لوڈ کردہ فائل کو PDF.js کے ساتھ کھولنے سے پہلے ArrayBuffer میں تبدیل کریں۔
async function loadPdf(file) {
const bytes = await file.arrayBuffer();
pdfDocument = await pdfjsLib.getDocument({
data: bytes
}).promise;
currentPage = 1;
renderPage(currentPage);
}
بھری ہوئی دستاویز کو محفوظ کیا جاتا ہے تاکہ آپ بعد میں تمام صفحات کو گرے اسکیل میں تبدیل کر سکیں۔
پی ڈی ایف پیج رینڈرنگ
PDF.js HTML کینوس پر ایک وقت میں ایک صفحہ پیش کرتا ہے۔
صفحات تلاش کریں۔
const page = await pdfDocument.getPage(currentPage);
ویو پورٹ بنائیں۔
const viewport = page.getViewport({
scale: 1.5
});
کینوس کا سائز تبدیل کریں۔
pdfCanvas.width = viewport.width;
pdfCanvas.height = viewport.height;
صفحہ رینڈر کریں۔
await page.render({
canvasContext: pdfCanvas.getContext("2d"),
viewport
}).promise;
رینڈرنگ مکمل ہونے کے بعد، منتخب صفحہ پیش نظارہ کے علاقے میں ظاہر ہوگا۔

صفحات کے درمیان نیویگیشن
زیادہ تر پی ڈی ایف دستاویزات میں متعدد صفحات ہوتے ہیں، لہذا صارفین کو سادہ نیویگیشن کنٹرولز کی ضرورت ہوتی ہے۔
موجودہ صفحہ کو ٹریک کرتا ہے۔
let currentPage = 1;
let pdfDocument = null;
پچھلے صفحے پر جائیں۔
previousButton.addEventListener("click", async () => {
if (currentPage > 1) {
currentPage--;
await renderPage(currentPage);
}
});
اگلے صفحے پر جائیں۔
nextButton.addEventListener("click", async () => {
if (currentPage < pdfDocument.numPages) {
currentPage++;
await renderPage(currentPage);
}
});
صفحہ کے اشارے کو اپ ڈیٹ کریں۔
pageCounter.textContent = `Page ${currentPage} of ${pdfDocument.numPages}`;
گرے اسکیل ٹرانسفارمیشن کو لاگو کرنے کا طریقہ طے کرنے سے پہلے صارفین اب دستاویز کو دریافت کر سکتے ہیں۔
تبادلوں کی ترتیبات کی تعمیر
پی ڈی ایف کو لوڈ کرنے اور پیش نظارہ کرنے کے بعد، صارف کنفیگر کر سکتے ہیں کہ دستاویز کو گرے سکیل میں کیسے تبدیل کیا جائے گا۔ سیٹنگ پینل صارفین کو گرے اسکیل کی شدت کو ایڈجسٹ کرنے، تبادلوں کا موڈ منتخب کرنے، فیصلہ کرنے کی اجازت دیتا ہے کہ کون سے صفحات پر کارروائی کرنی ہے، اور تبادلوں کو شروع کرنا ہے۔

گرے اسکیل کی شدت کو ایڈجسٹ کریں۔
Intensity سلائیڈر کنٹرول کرتا ہے کہ گرے اسکیل اثر کتنا لاگو ہوتا ہے۔
نچلی قدریں اصل رنگ کو زیادہ برقرار رکھتی ہیں، جب کہ اعلیٰ قدریں ایک حقیقی گرے اسکیل شکل پیدا کرتی ہیں۔
ایک سلائیڈر بنائیں۔
منتخب قدر پڑھتا ہے۔
const intensity = Number(document.getElementById("grayIntensity").value);
آپ جس شدت کا انتخاب کرتے ہیں اسے بعد میں آخری گرے اسکیل رنگ کا حساب لگانے کے لیے استعمال کیا جائے گا۔
تبادلوں کا موڈ منتخب کریں۔
یہ ٹول استعمال کے مختلف کیسز کے مطابق کئی گرے اسکیل موڈز پیش کرتا ہے۔
ایک ریڈیو بٹن بنائیں۔
Standard Grayscale
Black & White
Soft Gray
منتخب کردہ موڈ کو تلاش کریں۔
const conversionMode = document.querySelector(
'input[name="mode"]:checked'
).value;
کینوس پکسلز پر کارروائی کرتے وقت ہر موڈ ایک مختلف الگورتھم استعمال کرتا ہے۔
صفحہ منتخب کریں۔
صارف پوری دستاویز یا صرف منتخب صفحات کو تبدیل کر سکتے ہیں۔
صفحہ انتخاب کنٹرول بنائیں۔
All Pages
Specific Pages
آپ کے منتخب کردہ اختیارات پڑھیں۔
const applyMode = document.querySelector(
'input[name="pages"]:checked'
).value;
حسب ضرورت صفحہ کی حدود تلاش کریں۔
const pageRange = document.getElementById("pageRange").value.trim();
جب تمام صفحات منتخب ہونے پر، پی ڈی ایف کے تمام صفحات پر کارروائی کی جائے گی۔ بصورت دیگر، صرف آپ کے بتائے ہوئے صفحات کو تبدیل کیا جائے گا۔
پی ڈی ایف صفحات کو گرے اسکیل میں تبدیل کریں۔
ایک بار سیٹنگز کنفیگر ہو جانے کے بعد، صارفین تبادلوں کو شروع کر سکتے ہیں۔
ایک ایکشن بٹن بنائیں۔
اپنی تبدیلی شروع کریں۔
convertButton.addEventListener("click", async () => {
await convertPdf();
});

دوبارہ شروع کریں
صارفین موجودہ دستاویز کو صاف کر سکتے ہیں اور درخواست کو اس کی ابتدائی حالت میں واپس لے سکتے ہیں۔
ایک ری سیٹ بٹن بنائیں۔
درخواست کو دوبارہ ترتیب دیں۔
resetTool.addEventListener("click", () => {
location.reload();
});
یہ موجودہ پی ڈی ایف کو ہٹا دے گا اور پہلے سے طے شدہ ترتیبات کو بحال کر دے گا تاکہ آپ دیگر دستاویزات پر کارروائی کر سکیں۔
کینوس پکسلز پڑھیں
صفحہ رینڈر ہونے کے بعد، ہم اس پکسل ڈیٹا کو بازیافت کرتے ہیں۔
const imageData = context.getImageData(
0,
0,
canvas.width,
canvas.height
);
پکسل کی معلومات ایک صف میں محفوظ کی جاتی ہے۔
const pixels = imageData.data;
ہر پکسل چار اقدار پر مشتمل ہے:
آئیے الفا چینل کو تبدیل کیے بغیر آر جی بی ویلیوز کو اپ ڈیٹ کریں۔
رنگ کو گرے اسکیل میں تبدیل کریں۔
معیاری گرے اسکیل الگورتھم روشنی کی قدروں کا حساب لگانے کے لیے سرخ، سبز اور نیلے چینلز کا استعمال کرتے ہیں۔
تمام پکسلز کے ذریعے لوپ کریں۔
for (let i = 0; i < pixels.length; i += 4) {
const gray =
0.299 * pixels[i] +
0.587 * pixels[i + 1] +
0.114 * pixels[i + 2];
pixels[i] = gray;
pixels[i + 1] = gray;
pixels[i + 2] = gray;
}
یہ فارمولہ اس بات کی عکاسی کرتا ہے کہ انسانی آنکھ کس طرح چمک کو محسوس کرتی ہے اور اس وجہ سے قدرتی نظر آنے والی مٹیالا پیمانہ تصاویر تیار کرتی ہے۔
منتخب کنورژن موڈ کا اطلاق کریں۔
مختلف تبادلوں کے طریقے مختلف پکسل حسابات کا استعمال کرتے ہیں۔
مثال کے طور پر سیاہ اور سفید (حد) موڈ ہر پکسل کو خالص سیاہ یا خالص سفید میں تبدیل کرتا ہے۔
const threshold = 128;
const color = gray >= threshold ? 255 : 0;
pixels[i] = color;
pixels[i + 1] = color;
pixels[i + 2] = color;
کہ نرم سرمئی موڈ کم جارحانہ اثر پیدا کرنے کے لیے اصل رنگ اور گرے اسکیل اقدار کو ملا دیتا ہے۔
const softGray =
(gray * 0.6) +
(pixels[i] * 0.4);
pixels[i] = softGray;
pixels[i + 1] = softGray;
pixels[i + 2] = softGray;
جب منتخب موڈ لاگو ہوتا ہے، اپ ڈیٹ شدہ پکسلز واپس کینوس پر لکھے جاتے ہیں۔
context.putImageData(
imageData,
0,
0
);

منتخب صفحات پر کارروائی کریں۔
ہر بار پوری دستاویز پر کارروائی کرنے کے بجائے، یہ صرف آپ کے منتخب کردہ صفحات کو تبدیل کرتا ہے۔
صفحات کی ایک رینج پر اعادہ کریں۔
for (let page = startPage; page <= endPage; page++) {
await processPage(page);
}
حتمی پی ڈی ایف بننے سے پہلے ہر پروسیس شدہ صفحہ کو عارضی طور پر محفوظ کیا جاتا ہے۔
حتمی پی ڈی ایف بنائیں
ایک نیا پی ڈی ایف دستاویز بنائیں۔
const outputPdf = await PDFLib.PDFDocument.create();
پروسیس شدہ کینوس کو تصویر میں تبدیل کریں۔
const imageBytes = await canvasToBytes(pdfCanvas);
اپنی پی ڈی ایف میں ایک تصویر داخل کریں۔
const image = await outputPdf.embedPng(imageBytes);
ایک نیا صفحہ بنائیں۔
const page = outputPdf.addPage([
image.width,
image.height
]);
پروسیس شدہ تصویر کھینچیں۔
page.drawImage(image, {
x: 0,
y: 0,
width: image.width,
height: image.height
});
اس عمل کو تمام منتخب صفحات کے لیے دہرائیں جب تک کہ آپ کی نئی گرے اسکیل دستاویز مکمل نہ ہوجائے۔
تیار کردہ پی ڈی ایف کو محفوظ کریں۔
تمام صفحات پر کارروائی کے بعد اپنی مکمل دستاویز کو محفوظ کریں۔
const pdfBytes = await outputPdf.save();
ڈاؤن لوڈ کے قابل پی ڈی ایف فائل بنائیں۔
generatedPdfBlob = new Blob([pdfBytes], {
type: "application/pdf"
});
اب آپ اپنی گرے اسکیل PDF کا پیش منظر دیکھنے، نام تبدیل کرنے اور ڈاؤن لوڈ کرنے کے لیے تیار ہیں۔
نتائج کا پیش نظارہ کریں۔
تبدیل شدہ دستاویز کو ڈاؤن لوڈ کرنے سے پہلے صارفین کو حتمی آؤٹ پٹ کا جائزہ لینا مفید ہے۔ یہ آپ کو اس بات کی تصدیق کرنے کی اجازت دیتا ہے کہ منتخب صفحات کو صحیح طریقے سے تبدیل کیا گیا ہے اور یہ کہ گرے اسکیل ظاہری شکل آپ کی توقعات پر پورا اترتی ہے۔
PDF.js کا استعمال کرتے ہوئے بنائی گئی پی ڈی ایف لوڈ کریں۔
let finalPdf = null;
async function showResult() {
const bytes = await generatedPdfBlob.arrayBuffer();
finalPdf = await pdfjsLib.getDocument({
data: bytes
}).promise;
renderResultPage(1);
}
منتخب صفحہ کو رینڈر کرتا ہے۔
async function renderResultPage(pageNumber) {
const page = await finalPdf.getPage(pageNumber);
const viewport = page.getViewport({
scale: 1.5
});
resultCanvas.width = viewport.width;
resultCanvas.height = viewport.height;
await page.render({
canvasContext: resultCanvas.getContext("2d"),
viewport
}).promise;
}
صارفین پی ڈی ایف ڈاؤن لوڈ کرنے سے پہلے تمام تبدیل شدہ صفحات کو براؤز کر سکتے ہیں۔
نام تبدیل کریں اور ڈاؤن لوڈ کریں۔
تبدیل شدہ پی ڈی ایف کو محفوظ کرنے سے پہلے، صارف اپنی مرضی کے مطابق فائل کا نام فراہم کر سکتے ہیں۔
فائل کا نام ان پٹ بنائیں۔
فائل کا نام تلاش کریں۔
function getFilename() {
let filename = outputFilename.value.trim();
if (!filename) {
filename = "grayscale-document.pdf";
}
if (!filename.toLowerCase().endsWith(".pdf")) {
filename += ".pdf";
}
return filename;
}
تخلیق شدہ پی ڈی ایف کے بارے میں معلومات دکھاتا ہے۔
pageCount.textContent = `${finalPdf.numPages} Pages`;
fileSize.textContent = formatFileSize(generatedPdfBlob.size);
مکمل شدہ پی ڈی ایف ڈاؤن لوڈ کریں۔
downloadButton.addEventListener("click", () => {
const url = URL.createObjectURL(generatedPdfBlob);
const link = document.createElement("a");
link.href = url;
link.download = getFilename();
link.click();
URL.revokeObjectURL(url);
});
تمام کام مقامی طور پر براؤزر کے اندر ہوتا ہے، جس سے صارفین تبادلوں کے پورے عمل کے دوران اپنے دستاویزات کو نجی رکھ سکتے ہیں۔

ڈیمو: پی ڈی ایف سے گرے اسکیل کنورٹر کیسے کام کرتا ہے۔
آئیے پورے ورک فلو پر ایک نظر ڈالتے ہیں۔
مرحلہ 1: پی ڈی ایف اپ لوڈ کریں۔
صارفین پی ڈی ایف کو اپ لوڈ ایریا میں گھسیٹ سکتے ہیں یا پی ڈی ایف منتخب کریں۔.

مرحلہ 2: اپنے دستاویز کا جائزہ لیں۔
PDF.js اپ لوڈ کردہ دستاویزات کا صفحہ بہ صفحہ رینڈر کرتا ہے، جس سے صارفین تبدیلی سے پہلے فائلوں کا جائزہ لے سکتے ہیں۔

مرحلہ 3: تبدیلی کو ترتیب دیں۔
صارفین گرے اسکیل کی شدت کو ایڈجسٹ کرتے ہیں، تبادلوں کا موڈ منتخب کرتے ہیں، اور فیصلہ کرتے ہیں کہ آیا تمام صفحات پر کارروائی کرنی ہے یا صرف منتخب کردہ صفحات پر۔

مرحلہ 4: پی ڈی ایف میں تبدیل کریں۔
کلک کریں گرے اسکیل میں تبدیل کریں۔ منتخب صفحہ پر کارروائی شروع کرتا ہے۔

مرحلہ 5: تبدیل شدہ دستاویزات کا جائزہ لیں۔
پروسیسنگ مکمل ہونے کے بعد، ایپلیکیشن تیار کردہ گرے اسکیل پی ڈی ایف کا پیش نظارہ دکھاتی ہے۔

مرحلہ 6: نام تبدیل کریں اور ڈاؤن لوڈ کریں۔
آخر میں، صارف آؤٹ پٹ فائل کا نام تبدیل کر سکتے ہیں، صفحہ کی گنتی اور فائل کے سائز کا جائزہ لے سکتے ہیں، اور تبدیل شدہ پی ڈی ایف ڈاؤن لوڈ کر سکتے ہیں۔

کارکردگی کی تجاویز
بڑی پی ڈی ایف فائلوں کو پروسیسنگ میں زیادہ وقت درکار ہوتا ہے کیونکہ ہر صفحہ کو رینڈر اور کنورٹ کیا جانا چاہیے۔ صرف منتخب صفحات پر کارروائی کرنے سے کارکردگی بہتر ہوتی ہے۔
for (let page = startPage; page <= endPage; page++) {
await processPage(page);
}
فائلیں ڈاؤن لوڈ کرنے کے بعد، میموری کے استعمال کو کم کرنے کے لیے مفت عارضی وسائل۔
URL.revokeObjectURL(downloadUrl);
یہ آسان اصلاحیں بڑے، کثیر صفحات پر مشتمل PDF دستاویزات کے ساتھ کام کرتے وقت کنورٹر کو جوابدہ رکھنے میں مدد کرتی ہیں۔
عام غلطیاں
ایک عام غلطی اصل صفحہ کو دوبارہ رینڈر کیے بغیر ایک ہی صفحہ کو متعدد بار تبدیل کرنا ہے۔ ایک اور گرے اسکیل تبدیلی کو لاگو کرنے سے پہلے ہمیشہ اصل PDF صفحہ سے شروع کریں۔
await renderPage(currentPage);
ایک اور مسئلہ صارفین کو صفحہ کے غلط نمبر بتانے کی اجازت دینا ہے۔
if (pageNumber < 1 || pageNumber > pdfDocument.numPages) {
return;
}
آخر میں، یاد رکھیں کہ اعلیٰ آؤٹ پٹ کوالٹی کا نتیجہ عام طور پر بڑی پی ڈی ایف فائلوں میں ہوتا ہے۔ مناسب معیار کی ترتیب کا انتخاب آپ کو تصویر کی وضاحت اور فائل کے سائز کو متوازن کرنے میں مدد کرے گا۔
نتیجہ
اس ٹیوٹوریل میں، ہم نے جاوا اسکرپٹ کا استعمال کرتے ہوئے ایک براؤزر پر مبنی پی ڈی ایف ٹو گرے اسکیل کنورٹر بنایا ہے۔
آپ نے پی ڈی ایف دستاویز کو اپ لوڈ اور پیش نظارہ کرنے کا طریقہ سیکھا، PDF.js کے ساتھ صفحہ کو رینڈر کرنا، کینوس API کا استعمال کرتے ہوئے رنگین صفحہ کو گرے اسکیل میں تبدیل کرنا، منتخب صفحات پر کارروائی کرنا، PDF-lib کے ساتھ ایک نیا PDF بنانا، تیار شدہ دستاویز کا پیش نظارہ کرنا، آؤٹ پٹ فائل کا نام تبدیل کرنا، اور اسے براہ راست اپنے براؤزر سے ڈاؤن لوڈ کرنا۔
چونکہ تمام پروسیسنگ مقامی طور پر ہوتی ہے، صارفین اہم فائلوں کو بیرونی سرور پر اپ لوڈ کیے بغیر PDF دستاویزات کو گرے اسکیل میں تبدیل کر سکتے ہیں۔
آپ ہمارے پی ڈی ایف ٹو گرے اسکیل کنورٹر کا استعمال کرتے ہوئے پورے ورک فلو کو دریافت کر سکتے ہیں۔
یہاں سے، آپ اپنے پروجیکٹ کو اضافی خصوصیات کے ساتھ بڑھا سکتے ہیں جیسے سیپیا کنورژن، چمک اور کنٹراسٹ کنٹرول، کسٹم گرے اسکیل پرسیٹس، بیچ پی ڈی ایف پروسیسنگ، یا اضافی امیج فلٹرز کے لیے سپورٹ۔