Wix লাইব্রেরি সাইটে পিডিএফ ভিউয়ার কার্যকারিতা উন্নত করা
একটি সংগঠিত এবং ব্যবহারকারী-বান্ধব পদ্ধতিতে PDF ফাইলগুলির একটি বিশাল সংরক্ষণাগার প্রদর্শন করা একটি পাবলিক লাইব্রেরির ওয়েবসাইটে ব্যবহারকারীর অভিজ্ঞতা উন্নত করার জন্য অত্যন্ত গুরুত্বপূর্ণ। লক্ষ্য হল দর্শকদের পুরানো সংবাদপত্রের মতো ঐতিহাসিক রেকর্ডগুলিতে বিরামহীন অ্যাক্সেস অফার করা, যেগুলি পিডিএফ হিসাবে সংরক্ষণ করা হয়। এই প্রকল্পে, Wix, Velo এবং একটি HTML এম্বেড উপাদানের ব্যবহার একটি শক্তিশালী সিস্টেমের ভিত্তি তৈরি করে।
Wix-এর প্ল্যাটফর্ম আইফ্রেমের মাধ্যমে এমবেড করা উপাদানগুলিকে সমর্থন করে, ব্যবহারকারীদের পিডিএফ ভিউয়ারের মতো ইন্টারেক্টিভ উপাদান যোগ করতে দেয়। এই পিডিএফ ভিউয়ারটি একটি আইফ্রেম ব্যবহার করে এম্বেড করা হয়েছে এবং বর্তমানে একটি স্ট্যাটিক ইউআরএল নির্ধারণ করে যে কোন নথিটি প্রদর্শিত হবে। যাইহোক, একটি মসৃণ অভিজ্ঞতার জন্য ব্যবহারকারীর ইনপুটের উপর ভিত্তি করে পিডিএফ ফাইলটি গতিশীলভাবে পরিবর্তন করার প্রয়োজনীয়তা অপরিহার্য।
চ্যালেঞ্জটি হল ব্যবহারকারীদের দুটি ড্রপডাউন থেকে এক বছর এবং এক মাস নির্বাচন করার অনুমতি দেওয়া, যা প্রদর্শিত পিডিএফ নথিতে একটি পরিবর্তন ট্রিগার করবে। এতে আইফ্রেমের সাথে যোগাযোগের জন্য জাভাস্ক্রিপ্ট মেসেজিংকে একীভূত করা, ড্রপডাউন নির্বাচন অনুযায়ী নথির URL পরিবর্তন করতে সক্ষম করা জড়িত।
এই পদ্ধতিটি শুধুমাত্র অসংখ্য স্ট্যাটিক Wix পৃষ্ঠার প্রয়োজনীয়তা কমায় না বরং লাইব্রেরির পিডিএফ সংরক্ষণাগারে অ্যাক্সেস সহজ করে। নীচে, আমরা Velo ফ্রেমওয়ার্ক এবং জাভাস্ক্রিপ্ট ব্যবহার করে এটি বাস্তবায়নের জন্য প্রয়োজনীয় পদক্ষেপ এবং সমাধানগুলি অন্বেষণ করি।
আদেশ | ব্যবহারের উদাহরণ |
---|---|
PSPDFKit.load() | এই পদ্ধতিটি একটি নির্দিষ্ট পাত্রের ভিতরে PSPDFKit পিডিএফ ভিউয়ার শুরু করে। এটি প্রদত্ত ইউআরএল থেকে একটি পিডিএফ ফাইল লোড করে, এটি এম্বেড উপাদানের মধ্যে দর্শনযোগ্য করে তোলে। এটি PSPDFKit-এর জাভাস্ক্রিপ্ট লাইব্রেরির জন্য নির্দিষ্ট, যা পিডিএফ ডকুমেন্ট এম্বেড এবং দেখার জন্য তৈরি করা হয়েছে। |
postMessage() | মূল উইন্ডো এবং একটি এমবেডেড আইফ্রেমের মধ্যে যোগাযোগ করতে ব্যবহৃত হয়। এই প্রসঙ্গে, এটি প্রধান পৃষ্ঠা থেকে আইফ্রেমে একটি বার্তা পাঠায়, আইফ্রেমকে ড্রপডাউন নির্বাচনের উপর ভিত্তি করে তার বিষয়বস্তু (পিডিএফ URL) আপডেট করার অনুমতি দেয়। |
window.addEventListener("message") | postMessage() এর মাধ্যমে প্রেরিত বার্তা শুনতে আইফ্রেমের ভিতরে এই ইভেন্ট শ্রোতা যোগ করা হয়। এটি প্রাপ্ত ডেটার উপর ভিত্তি করে আইফ্রেমে একটি নতুন পিডিএফ ডকুমেন্ট গতিশীলভাবে লোড করার জন্য বার্তাটিকে প্রক্রিয়া করে। |
event.data | মেসেজ ইভেন্ট হ্যান্ডলারের মধ্যে, event.data প্যারেন্ট উইন্ডো থেকে পাঠানো ডেটা ধারণ করে। এই ক্ষেত্রে, এটি PSPDFKit ভিউয়ারে লোড করার জন্য নির্বাচিত PDF ফাইলের URL অন্তর্ভুক্ত করে। |
document.getElementById() | এই DOM ম্যানিপুলেশন পদ্ধতিটি একটি HTML উপাদানকে এর ID দ্বারা পুনরুদ্ধার করে। এটি ড্রপডাউন উপাদানগুলি থেকে ব্যবহারকারীর ইনপুট ক্যাপচার করতে ব্যবহৃত হয়, স্ক্রিপ্টটিকে পিডিএফ URL আপডেটের জন্য নির্বাচিত বছর এবং মাস নির্ধারণ করার অনুমতি দেয়। |
DOMContentLoaded | একটি ইভেন্ট যা নিশ্চিত করে যে DOM সম্পূর্ণরূপে লোড হওয়ার পরেই JavaScript কার্যকর হয়৷ DOM উপাদানগুলি উপস্থিত হওয়ার আগে অ্যাক্সেস করার চেষ্টা করার সময় এটি ত্রুটিগুলিকে প্রতিরোধ করে৷ |
addEventListener("change") | এই ইভেন্ট শ্রোতা কোনো পরিবর্তনের জন্য ড্রপডাউন উপাদান নিরীক্ষণ করে। যখন একজন ব্যবহারকারী একটি ভিন্ন বছর বা মাস নির্বাচন করেন, তখন ফাংশনটি PDF URL আপডেট করতে এবং সংশ্লিষ্ট নথি লোড করতে ট্রিগার হয়। |
template literals | টেমপ্লেট লিটারেল (ব্যাকটিক্স দ্বারা আবদ্ধ) ভেরিয়েবলগুলিকে স্ট্রিংগুলিতে এম্বেড করার অনুমতি দেয়, এটি নির্বাচিত PDF এর জন্য গতিশীলভাবে URL তৈরি করা সহজ করে তোলে। যেমন: `https://domain.tld/${year}_${month}_etc.pdf`। |
container: "#pspdfkit" | PSPDFKit ইনিশিয়ালাইজেশনে, কন্টেইনার HTML উপাদান (আইডি দ্বারা) নির্দিষ্ট করে যেখানে পিডিএফ ভিউয়ার রেন্ডার করা হবে। পৃষ্ঠায় পিডিএফ কোথায় প্রদর্শিত হবে তা নির্ধারণ করার জন্য এটি অপরিহার্য। |
Wix এ ড্রপডাউন নির্বাচন সহ গতিশীল পিডিএফ লোড হচ্ছে
এই সমাধানে, আমরা একটি এম্বেডেড iFrame-এর মধ্যে প্রদর্শিত একটি PDF ফাইলের URL গতিশীলভাবে পরিবর্তন করতে Wix পৃষ্ঠায় এক জোড়া ড্রপডাউন উপাদান ব্যবহার করি। এই সিস্টেমটি বিশেষ করে পাবলিক লাইব্রেরিগুলির জন্য উপযোগী যারা আর্কাইভ করা সংবাদপত্রের পিডিএফগুলিতে সহজে অ্যাক্সেস প্রদান করতে চায়৷ মূল কার্যকারিতা দ্বারা চালিত হয় জাভাস্ক্রিপ্ট মেসেজিং, যা ড্রপডাউন থেকে এম্বেড করা PDF ভিউয়ারে ব্যবহারকারীর নির্বাচন পাঠায়। PSPDFKit ভিউয়ারটি iFrame-এর ভিতরে পিডিএফ রেন্ডার করতে ব্যবহৃত হয় এবং আমরা ব্যবহারকারীর বছর এবং মাসের পছন্দের উপর ভিত্তি করে ইউআরএল পরিবর্তন করে ভিউয়ারকে ম্যানিপুলেট করি। এটি একাধিক স্ট্যাটিক Wix পৃষ্ঠাগুলি তৈরি না করেই বৃহৎ আর্কাইভগুলিকে সারফেস করার একটি সুবিন্যস্ত উপায় প্রদান করে।
প্রথম ড্রপডাউন বছর নির্বাচন করে, এবং দ্বিতীয় ড্রপডাউন মাস নির্বাচন করে। যখন ব্যবহারকারী উভয়টি নির্বাচন করে, সিস্টেমটি সংশ্লিষ্ট পিডিএফ ফাইলের জন্য উপযুক্ত URL তৈরি করে। দ PSPDFKit.load() পদ্ধতিটি এর কেন্দ্রীয় কারণ এটি আপডেট করা URL এর উপর ভিত্তি করে iFrame-এ নতুন PDF লোড করে। এই পদ্ধতিটি PSPDFKit লাইব্রেরির অংশ, যা একটি বহিরাগত স্ক্রিপ্টের মাধ্যমে পৃষ্ঠায় এমবেড করা হয়। দ পোস্ট মেসেজ() এপিআই বিকল্প সমাধানেও গুরুত্বপূর্ণ, যা মূল পৃষ্ঠা এবং আইফ্রেমের মধ্যে বার্তা পাঠানোর অনুমতি দেয়। আইফ্রেমে নতুন PDF URL সম্বলিত একটি বার্তা পাঠানোর মাধ্যমে, PDF ভিউয়ার গতিশীলভাবে আপডেট হয়।
DOM সম্পূর্ণরূপে লোড হলেই স্ক্রিপ্টটি চলে তা নিশ্চিত করতে, আমরা ব্যবহার করি DOMContentLoaded ঘটনা এটি নিশ্চিত করে যে ড্রপডাউন উপাদান এবং PSPDFKit কন্টেইনার স্ক্রিপ্টে অ্যাক্সেসযোগ্য। এছাড়াও আমরা প্রতিটি ড্রপডাউনে ইভেন্ট শ্রোতাদের যোগ করি। যখন ব্যবহারকারী একটি বছর বা মাস নির্বাচন করে, তখন সংশ্লিষ্ট ইভেন্ট শ্রোতা নির্বাচনটি ক্যাপচার করে এবং সঠিক URL দিয়ে PDF ভিউয়ারকে পুনরায় লোড করার জন্য একটি ফাংশন কল করে। এটি একটি সাধারণ ফাংশনের মাধ্যমে পরিচালিত হয় যা ড্রপডাউনগুলিতে নির্বাচিত মানগুলি থেকে URL তৈরি করতে টেমপ্লেট লিটারেল ব্যবহার করে। এই পদ্ধতিটি শুধুমাত্র বাস্তবায়ন করা সহজ নয় বরং এটি অত্যন্ত মডুলারও, যা নতুন আর্কাইভ যোগ করার সাথে সাথে সহজে আপডেট করার অনুমতি দেয়।
দ্বিতীয় পদ্ধতিতে, আমরা ব্যবহার করি পোস্ট মেসেজ() মূল পৃষ্ঠা এবং iFrame-এর মধ্যে যোগাযোগ করতে। মূল পৃষ্ঠাটি ড্রপডাউন পরিবর্তনের জন্য শোনে এবং iFrame-এ নতুন PDF URL সম্বলিত একটি বার্তা পাঠায়, যা একটি ইভেন্ট লিসেনার ব্যবহার করে বার্তাটি গ্রহণ করে। আরও বিচ্ছিন্ন পরিবেশের সাথে কাজ করার সময় এই পদ্ধতিটি কার্যকর যেখানে iframe সরাসরি মূল পৃষ্ঠার DOM-এর সাথে যোগাযোগ করতে পারে না। উভয় পদ্ধতিই একটি এমবেডেড পিডিএফ ভিউয়ারের বিষয়বস্তুকে গতিশীলভাবে আপডেট করার কার্যকর উপায় প্রদান করে, একাধিক স্ট্যাটিক পৃষ্ঠার প্রয়োজনীয়তা হ্রাস করে এবং ব্যবহারকারী-বান্ধব ব্রাউজিং অভিজ্ঞতা প্রদান করে।
Wix-এ পিডিএফ ভিউয়ারের জন্য ড্রপডাউন-ভিত্তিক URL স্যুইচিং বাস্তবায়ন করা
জাভাস্ক্রিপ্ট এবং ভেলো ফ্রেমওয়ার্ক ব্যবহার করে ফ্রন্টএন্ড স্ক্রিপ্ট
// HTML structure for the dropdowns and embed element
<div>
<label for="yearSelect">Select Year:</label>
<select id="yearSelect">
<option value="">--Year--</option>
<option value="1962">1962</option>
<option value="1963">1963</option>
<!-- Add other years dynamically or manually -->
</select>
<label for="monthSelect">Select Month:</label>
<select id="monthSelect">
<option value="">--Month--</option>
<option value="January">January</option>
<option value="February">February</option>
<!-- Add other months dynamically or manually -->
</select>
</div>
// Embedded PDF viewer in iframe
<div id="pspdfkit" style="width: 100%; height: 100%; max-width: 1920px;"></div>
<script src="https://cdn.cloud.pspdfkit.com/pspdfkit-web@2024.5.2/pspdfkit.js"></script>
// JavaScript to update URL based on dropdown selection
<script>
document.addEventListener("DOMContentLoaded", () => {
const yearSelect = document.getElementById("yearSelect");
const monthSelect = document.getElementById("monthSelect");
function loadPDF(year, month) {
if (year && month) {
const url = `https://domain.tld/${year}_${month}_etc.pdf`;
PSPDFKit.load({
container: "#pspdfkit",
document: url,
}).catch((error) => {
console.error("Failed to load PDF:", error);
});
}
}
yearSelect.addEventListener("change", () => {
loadPDF(yearSelect.value, monthSelect.value);
});
monthSelect.addEventListener("change", () => {
loadPDF(yearSelect.value, monthSelect.value);
});
});
</script>
বিকল্প পদ্ধতি: iFrame যোগাযোগের জন্য PostMessage API ব্যবহার করা
iframe এবং মূল নথির মধ্যে আরও ভাল বিচ্ছিন্নতার জন্য পোস্টমেসেজ API ব্যবহার করে ফ্রন্টএন্ড স্ক্রিপ্ট
// HTML structure remains the same for dropdowns
// Here, we use iframe with a postMessage-based communication system
<iframe id="pdfViewer" src="about:blank" style="width: 100%; height: 100%;"></iframe>
// JavaScript for sending messages to iframe
<script>
document.addEventListener("DOMContentLoaded", () => {
const yearSelect = document.getElementById("yearSelect");
const monthSelect = document.getElementById("monthSelect");
const iframe = document.getElementById("pdfViewer");
function updatePDFViewer(year, month) {
if (year && month) {
const url = `https://domain.tld/${year}_${month}_etc.pdf`;
iframe.contentWindow.postMessage({
type: "updatePDF",
url: url
}, "*");
}
}
yearSelect.addEventListener("change", () => {
updatePDFViewer(yearSelect.value, monthSelect.value);
});
monthSelect.addEventListener("change", () => {
updatePDFViewer(yearSelect.value, monthSelect.value);
});
});
</script>
// Inside iframe, use this script to receive the message
<script>
window.addEventListener("message", (event) => {
if (event.data.type === "updatePDF" && event.data.url) {
PSPDFKit.load({
container: "#pspdfkit",
document: event.data.url,
});
}
});
</script>
Wix এবং জাভাস্ক্রিপ্ট মেসেজিং এর মাধ্যমে পিডিএফ আর্কাইভ অ্যাক্সেসযোগ্যতা উন্নত করা
Wix এ এমবেডেড পিডিএফ ইউআরএলকে গতিশীলভাবে পরিবর্তন করতে ড্রপডাউন উপাদানগুলি ব্যবহার করার সময় আরেকটি গুরুত্বপূর্ণ বিবেচনা নিশ্চিত করা হচ্ছে iFrame এবং মূল পৃষ্ঠাটি কার্যকর। যদিও জাভাস্ক্রিপ্ট মেসেজিং আমাদের এই দুটি উপাদানের মধ্যে ডেটা পাঠাতে দেয়, নির্বাচন কীভাবে আপডেটগুলিকে ট্রিগার করে তা অপ্টিমাইজ করে কর্মক্ষমতা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করা যেতে পারে। এটি ইনপুট ডিবাউন্স করে করা যেতে পারে, যার অর্থ প্রতিটি পরিবর্তনের পরিবর্তে ব্যবহারকারী তাদের নির্বাচন সম্পূর্ণ করার পরে সিস্টেমটি শুধুমাত্র PDF ভিউয়ার আপডেট করে।
আরেকটি দিক যা এখনো কভার করা হয়নি ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS). যেহেতু পিডিএফগুলি একটি বাহ্যিক সার্ভারে (যেমন ডিজিটাল মহাসাগর) হোস্ট করা হয়, তাই Wix ডোমেন থেকে অ্যাক্সেসের অনুমতি দেওয়ার জন্য সার্ভারটি কনফিগার করা হয়েছে তা নিশ্চিত করা অত্যন্ত গুরুত্বপূর্ণ। সার্ভারের CORS সেটিংস সঠিকভাবে কনফিগার করা না থাকলে, PDF ভিউয়ার ডকুমেন্টটি লোড করতে সক্ষম নাও হতে পারে, যার ফলে ত্রুটি দেখা দেয়। পিডিএফ ফাইলগুলি হোস্ট করা সার্ভারে সঠিক CORS শিরোনাম দুটি প্ল্যাটফর্মের মধ্যে বিরামহীন একীকরণের জন্য অপরিহার্য।
অতিরিক্তভাবে, আপনি লোড হওয়ার সময় কমাতে ঘন ঘন অ্যাক্সেস করা PDF ফাইলগুলি প্রিলোড করে সিস্টেমটিকে উন্নত করতে পারেন। প্রিলোডিং কৌশলগুলি কার্যকর হয় যখন ব্যবহারকারী একাধিক মাস বা বছরের মধ্যে পরিবর্তন করতে পারে। ব্রাউজারের ক্যাশে এই ফাইলগুলি সংরক্ষণ করে, পরবর্তী নথি লোড দ্রুত হবে, একটি মসৃণ ব্যবহারকারীর অভিজ্ঞতা প্রদান করবে। এটি পরিষেবা কর্মী বা অন্যান্য ক্যাশিং প্রক্রিয়া ব্যবহার করে করা যেতে পারে, যা ব্যবহারকারী উপলব্ধ বিকল্পগুলির মাধ্যমে নেভিগেট করার সাথে সাথে পিডিএফগুলি প্রিলোড করার জন্য সেট আপ করা যেতে পারে।
Wix-এ ডাইনামিক PDF এম্বেড সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্ন
- আমি কিভাবে Wix এ ড্রপডাউন নির্বাচক যোগ করব?
- আপনি Wix সম্পাদক ব্যবহার করে ড্রপডাউন উপাদান যোগ করতে পারেন, এবং জাভাস্ক্রিপ্ট ব্যবহার করে তাদের নিয়ন্ত্রণ করতে অনন্য আইডি বরাদ্দ করতে পারেন। ড্রপডাউন উপাদানগুলি এর মাধ্যমে পিডিএফ ইউআরএলে পরিবর্তনগুলি ট্রিগার করবে document.getElementById().
- কি করে PSPDFKit.load() আদেশ করবেন?
- দ PSPDFKit.load() পদ্ধতিটি পিডিএফ ভিউয়ার রেন্ডার করার জন্য এবং এটিতে একটি নির্দিষ্ট পিডিএফ ফাইল লোড করার জন্য দায়ী। এই পদ্ধতিটি PSPDFKit লাইব্রেরির অংশ যা পিডিএফ ফাইলগুলিকে গতিশীলভাবে প্রদর্শন করতে ব্যবহৃত হয়।
- ব্যবহার করতে পারি postMessage() ক্রস-অরিজিন যোগাযোগের জন্য?
- হ্যাঁ, দ postMessage() API বিশেষভাবে বিভিন্ন উত্সের মধ্যে যোগাযোগের জন্য ডিজাইন করা হয়েছে, যেমন একটি মূল পৃষ্ঠা এবং একটি iFrame এর মধ্যে, যা এই বাস্তবায়নের জন্য অত্যন্ত গুরুত্বপূর্ণ৷
- পিডিএফ লোড করার সময় আমি কীভাবে ত্রুটিগুলি পরিচালনা করব?
- আপনি একটি যোগ করে ত্রুটি পরিচালনা করতে পারেন .catch() ব্লক PSPDFKit.load() লোডিং প্রক্রিয়া চলাকালীন যে কোনো ত্রুটি ধরার জন্য এবং একটি উপযুক্ত ত্রুটি বার্তা প্রদর্শন করার ফাংশন।
- আমার কি CORS-এর জন্য আমার সার্ভার কনফিগার করতে হবে?
- হ্যাঁ, যদি আপনার পিডিএফগুলি একটি ভিন্ন ডোমেনে হোস্ট করা হয়, তাহলে আপনাকে নিশ্চিত করতে হবে যে সার্ভারটি যথাযথভাবে সেট আপ করা হয়েছে CORS উইক্স সাইটকে নথিগুলি অ্যাক্সেস করার অনুমতি দেওয়ার জন্য শিরোনাম।
ডাইনামিক পিডিএফ ডিসপ্লেতে চূড়ান্ত চিন্তা
এই সমাধানটি একটি একক পৃষ্ঠায় পিডিএফ ফাইলের বড় আর্কাইভগুলি প্রদর্শন করার প্রক্রিয়াটিকে সহজ করে। বছর এবং মাস নির্বাচন করার জন্য দুটি ড্রপডাউন উপাদান ব্যবহার করে, আমরা একাধিক Wix পৃষ্ঠা তৈরি না করেই পিডিএফ ভিউয়ারকে গতিশীলভাবে আপডেট করতে পারি।
ড্রপডাউন এবং iFrame-এর মধ্যে জাভাস্ক্রিপ্ট মেসেজিংয়ের সাথে Velo ফ্রেমওয়ার্কের নমনীয়তাকে একত্রিত করে, এই পদ্ধতিটি ঐতিহাসিক ডেটা সংগঠিত এবং উপস্থাপন করার একটি কার্যকর উপায় প্রদান করে। এটি লাইব্রেরি আর্কাইভের মতো পাবলিক-মুখী ওয়েবসাইটগুলির জন্য উভয় মাপযোগ্য এবং ব্যবহারকারী-বান্ধব।
Wix এবং জাভাস্ক্রিপ্টের সাথে ডায়নামিক পিডিএফ লোড করার জন্য উত্স এবং রেফারেন্স
- Velo ফ্রেমওয়ার্ক ব্যবহার করে Wix-এ HTML iFrame উপাদান এবং জাভাস্ক্রিপ্ট মেসেজিংয়ের সাথে কাজ করার বিষয়ে বিস্তারিত ডকুমেন্টেশন প্রদান করে। ভিজিট করুন Wix বিকাশকারী ডক্স আরও তথ্যের জন্য
- PSPDFKit-এর অফিসিয়াল ডকুমেন্টেশন, কিভাবে তাদের JavaScript লাইব্রেরি ব্যবহার করে একটি iFrame-এর মধ্যে PDF এম্বেড এবং লোড করতে হয় তার বিশদ বিবরণ। এটি এখানে অ্যাক্সেস করুন: PSPDFKit ডকুমেন্টেশন .
- ডিজিটাল মহাসাগরের মতো বাহ্যিক সার্ভার থেকে যথাযথ PDF লোডিং নিশ্চিত করতে ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) বাস্তবায়নের জন্য একটি নির্দেশিকা৷ আপনি আরো পড়তে পারেন CORS-এ MDN ওয়েব ডক্স .