معاينات PDF المضمنة

:discourse2: ملخص معاينات PDF المدمجة هو مكون سمة مخصص لأجهزة سطح المكتب فقط، سيسمح لك بإنشاء معاينات للمرفقات بصيغة PDF.
:eyeglasses: معاينة معاينة في منشئ سمات Discourse (أجهزة سطح المكتب فقط)
:hammer_and_wrench: رابط المستودع https://github.com/discourse/discourse-pdf-previews
:open_book: جديد في سمات Discourse؟ دليل المبتدئين لاستخدام سمات Discourse

تثبيت مكون السمة هذا

الميزات

قبل

بعد

كما ذُكر أعلاه، سيعمل هذا المكون فقط على أجهزة سطح المكتب. لا توجد فائدة كبيرة من عرض المعاينات على الأجهزة المحمولة لأن كل شيء سيكون صغيرًا جدًا وصعب القراءة.

يستخدم هذا المكون التنفيذ الأصلي للمتصفح لعرض ملفات PDF، لذا قد تختلف النتائج في المظهر باختلاف المتصفحات.

أيضًا، يرجى ملاحظة أن رفع ملفات PDF غير مسموح به افتراضيًا في Discourse. إذا كنت تريد السماح لمستخدميك برفع ملفات PDF، فستحتاج إلى إضافة هذا الامتداد إما إلى authorized_extensions إذا كنت تريد أن يتمكن جميع المستخدمين من رفع ملفات PDF، أو authorized_extensions_for_staff إذا كنت تريد تقييد ذلك على أعضاء الطاقم فقط.

:information_source: إذا كنت تستخدم S3، فقد تحتاج أيضًا إلى تحديث سياسة CORS الخاصة بك. يرجى الاطلاع على المنشور أدناه: Inline PDF Previews - #106 by JammyDodger

كيف أستخدمه؟

  1. تثبيت المكون
  2. السماح برفع ملفات PDF
  3. تحديث الصفحة
  4. رفع ملف PDF

هذا كل شيء. الباقي يجب أن يعمل تلقائيًا.

الإعدادات

الاسم الوصف
وضع المعاينة مدمج: سيتم عرض مرفقات PDF مدمجة داخل المنشورات

تبويب جديد: ستؤدي روابط مرفقات PDF إلى نقل المستخدم إلى تبويب جديد حيث سيتم عرض ملف PDF

ميزات إضافية

إذا كنت تريد أن لا يتم عرض ملف PDF معين مدمجًا، فيمكنك ببساطة إضافة مسافة قبل اسم الملف - على سبيل المثال:

هذا سيظهر مدمجًا

[sample-pdf.pdf|attachment](upload://usvbcKiQSWqA3w10gnf5PtydiXR.pdf) (82.9 KB)

هذا لن يظهر مدمجًا

[ sample-pdf.pdf|attachment](upload://usvbcKiQSWqA3w10gnf5PtydiXR.pdf) (82.9 KB)

:discourse2: مُستضاف لدينا؟ تتوفر مكونات السمات للاستخدام في خططنا القياسية، والأعمال، والمؤسسات.

68 إعجابًا

أقوم باستضافة ملفات التحميل والصور الخاصة بي على S3، وقد تم حظر المعاينة بسبب “سياسة CORS: لا توجد رأسية ‘Access-Control-Allow-Origin’”.

وفيما يلي ما يظهره كونسول Chrome:

تم حظر الوصول إلى fetch في 'https://travelmassive-discourse-cdn.s3.dualstack.us-west-1.amazonaws.com/original/2X/b/b578f6364592121964e6a2fd4969e5c1222bd909.pdf' (تم إعادة التوجيه من 'https://lounge.travelmassive.com/uploads/short-url/pTnA3r043WfhDK8HSdPQrtNn8Lf.pdf') من المصدر 'https://lounge.travelmassive.com' بسبب سياسة CORS: لا توجد رأسية 'Access-Control-Allow-Origin' في المورد المطلوب. إذا كانت استجابة غير شفافة تلبي احتياجاتك، فقم بتعيين وضع الطلب إلى 'no-cors' لجلب المورد مع تعطيل CORS.

تحديث

تمكنت من حل هذه المشكلة بإضافة سياسة CORS التالية في تكوين حوض S3 الخاص بي.

<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>https://mydiscourse.url/</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
   <AllowedHeader>*</AllowedHeader>
   <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
 </CORSRule>
</CORSConfiguration>
إعجابَين (2)

من الضروري الإشارة إلى أنه إذا رأيت هذا النص في رسالة الخطأ from origin 'https://lounge.travelmassive.com' has been حيث يكون نطاقك بدون شرطة مائلة / في النهاية، فيجب عليك أيضًا إضافة نطاقك في إعدادات CORS بدون شرطة مائلة في النهاية كما يلي:
https://mydiscourse.url

إعجاب واحد (1)

لاحظت أن عمليات الرفع الخاصة بك تتم على AWS، لذا فإن المشكلة على الأرجح تتعلق بـ CORS (المكون غير نشط على موقعك لدي للتأكد). راجع المنشور أدناه منشورك.

شكرًا لمشاركتك ذلك!

يرجى ملاحظة أن هذه المشكلة ستؤثر فقط على المستخدمين الذين يستضيفون بأنفسهم وقد قاموا بإعداد شيء مثل S3. لن يواجه المستخدمون الذين يستضيفون بأنفسهم ولا يستخدمون S3 هذه المشكلة. كما أن العملاء الذين تستضيفهم CDCK لن يحتاجوا إلى القلق بشأن ذلك لأنهم قاموا بالفعل بإعداد ذلك.

ومع ذلك، فإن تكوين CORS يقع إلى حد ما خارج نطاق هذا الموضوع. إذا لم تسمح سلة الرفع الخاصة بك بالوصول إلى نطاقك، فيجب إصلاح ذلك على أي حال، لأن ذلك قد يتسبب في بعض المشكلات الأخرى.

أنا غير متأكد تمامًا مما حدث هنا. يبدو أن كلتا الحالتين تعملان بالنسبة لي في كل مرة أجرب فيها. يمكننا أن نعتبر ذلك مشكلة شبكة عابرة، لكن يرجى إخباري إذا رأيتها مرة أخرى :+1:

لقد دفعت تحديثًا صغيرًا لهذا المكون من شأنه تحسين إدراك التحميل، حيث يوجد الآن عنصر نائب (placeholder) يعتمد على لون السمة بدلاً من أنماط Iframe الافتراضية للمتصفح. يظهر فقط أثناء تحميل الملف، لذا في 99% من الوقت، لن تلاحظه حتى.

نظرًا لأن معظم ملفات PDF ستُحمّل فورًا، لم أشعر أن إضافة مؤشر تحميل (spinner) يستحق العناء.

9 إعجابات

هل من الممكن جعل معاينة PDF قابلة للإخفاء بإضافة مسافة قبل رابط الرفع، مثلما يحدث مع التضمين البسيط؟ في بعض الأحيان تريد قائمة بالوثائق وليس المعاينات، وفي أحيان أخرى تريد معاينة.

9 إعجابات

أنا أستخدم متصفح سفاري على نظام ماك أو إس كاتالينا، ولا أملك أي إعدادات تمنع عرض ملفات PDF داخل المتصفح — على سبيل المثال، الرابط http://www.orimi.com/pdf-test.pdf يعمل بشكل صحيح. لكنني لا أزال أواجه نافذة/رسالة “الإضافة المحظورة” عند معاينة التصميم في منشئ السمات.

إعدادات الموقع المحددة في تفضيلات سفاري لا تختلف عن المواقع الأخرى.

هل يواجه أي شخص آخر هذه المشكلة؟

3 إعجابات

لا يزال الأمر لا يعمل بالنسبة لي على Safari في نظام MacOS Big Sur. لا توجد إعدادات خاصة لإضافات المدونة، وتُعرض ملفات PDF أخرى في المتصفح.

يُظهر Safari Web Inspector الشكاوى التالية عند تحميل صفحة المعاينة في theme-creator:
توجيه غير معترف به في سياسة أمان المحتوى 'worker-src'.
تم رفض تحميل blob:https://theme-creator.discourse.org/7b9b62c7-e782-4080-a521-04e3b06aa142 لأنه غير موجود في توجيه object-src لسياسة أمان المحتوى.

3 إعجابات

سيكون هذا تحسينًا كبيرًا لهذا المكون! هل هذا ممكن، @Johani؟

5 إعجابات

نفس المشكلة بالنسبة لي في Firefox، ولكن فقط بعد الزيارة الثانية :wink:
هل هناك حل بديل لهذه المشكلة؟ هل يمكن الإعلان يدويًا في إعدادات CSP؟

شكرًا لك

إعجاب واحد (1)

توقف هذا عن العمل على موقعي. أرى مربعًا أسود كبيرًا بدلاً من معاينة ملف PDF:

إلغاء تفعيل الإضافات عبر الوضع الآمن لا يُحدث أي فرق، وكذلك إزالة كل مكون آخر من مكونات السمة.

حدث هذا بعد نقل صور وملفات التحميل إلى S3، وقد يكون هذا هو السبب. آمل ألا يكون كذلك، لأنه لا يمكن إعادتها بسهولة!

أنا في حيرة. للأسف، إنه مكون رائع. هل لديك أي اقتراحات؟

إعجابَين (2)

أرى نفس السلوك مع تفعيل تحميلات S3.

3 إعجابات

هل ما زلت قادرًا على تنزيل ملف PDF؟
لا يزال يعمل معي (s3 + وسائط آمنة وبدون CDN) :thinking:

إعجاب واحد (1)

نعم، نحن كذلك. لدينا نفس الإعداد مثلك (أعتقد).

إعجاب واحد (1)

:thinking:

  • روابطي في الرسائل تكون على شكل domain/secure-media-uploads/original/...
  • لكن في وحدة التحكم/الشبكة، يمكنني رؤية أن التنزيلات الفعلية تأتي من الحوض (bucket).
    هل ترى بيانات اعتماد amz؟

إذا لم تكن موجودة، فربما يساعدك هذا؟

أتذكر أيضًا أنه كان يحدث شيء غريب عندما حاولت نقل منشور من فئات (أو ربما كان ذلك نسخًا ولصقًا؟). نجح الأمر في النهاية عندما قمت بإعادة تحميل الملف.

إعجاب واحد (1)

أواجه نفس السلوك على تثبيت جديد لـ Discourse وعلى ملف PDF مرفق جديد.

3 إعجابات

شكرًا لك يا @Benjamin_D. اتضح أن رفع الملفات الآمن غير مفعل لدي، وروابطي تبدو جميعها جيدة وتعمل بشكل صحيح، مثل هذا الرابط:

The HiNZ eHealth Forum - trusted online digital health discussion

لذا أنا في حيرة - خاصةً حول سبب عمله في منتديين أديرهما ولا يعمل في الآخر - مع أن S3 هو الاختلاف الوحيد. وأنك نجحت في جعله يعمل مع S3. أنا حقًا في حيرة من أمري.

إعجاب واحد (1)

بعد التحديث إلى أحدث إصدار من discourse، لم تعد ملفات PDF المرفقة تُعرض. ما الذي قد يكون المشكلة؟

إعجاب واحد (1)

قد يكون هناك تعارض مع مكون أو سمة أخرى. إنه يعمل كما هو متوقع بالنسبة لي. ابدأ بتعطيل المكونات الأخرى وجرب استخدام السمة الافتراضية إذا كانت سمتك مختلفة. الأمر نفسه ينطبق على الإضافات.

3 إعجابات

حسنًا - لقد أحرزت تقدمًا. تعطيل عمليات التحميل إلى S3 يحل المشكلة بالنسبة للuploads الجديدة. لكنني أواجه فوضى بين S3 والمحلي إذا سلكْتُ هذا المسار!

قد يكون الأمر أنني لا أستخدم ميزة CDN (وهي CloudFront) التي تظهر الأخطاء المزعجة في صفحة المسؤول. سأحاول إعداد ذلك وأرى ما إذا كان ذلك سيعمل.

لاحقًا - لا، لا يُحدث CDN أي فرق.

لاحقًا جدًا - تم إزالة عمليات التحميل إلى S3 بنجاح (مع بعض الجهد)، لذا كل شيء على ما يرام الآن.

الآن، أنا متحمس لتحسينه! هل هناك أي شخص موهوب يمتلك المهارات ويهتم بمحاولة ذلك؟

4 إعجابات

أبحث عن إضافة تسمح بفتح ملف PDF في علامة تبويب جديدة.
السلوك الحالي لمنصتي Discourse يسمح بالتنزيل فقط.
هل من الممكن تحقيق ذلك باستخدام سمة مشابهة؟

5 إعجابات