اذهب إلى المحتوى

السؤال

نشر

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

وحاولت إنشاء صور مصغرة أثناء تحميل ملفات PDF باستخدام Laravel MediaLibrary، لكنني فشلت، فما هي طريقة لفتح أي ملف PDF وعرضه للقراءة فقط دون السماح بالتحميل أو الطباعة؟

أنشأت دالة في الكونترلر:

public function view($id)
{
  $files = File::find($id);

  return view('view', compact('files'));
}

وأيضًا أنشأت ملف Blade لعرض الملف:

<iframe height="500" width="500" src="/asset/'{{ $files->file_path }}" frameborder="0"></iframe>
أو
<iframe height="500" width="500" src="{{ asset('files/'.$files->file_path) }}" frameborder="0"></iframe>

وأضفت المسار:

Route::get('read/{id}', 'read');

وأضفت زرًا على الصفحة مع رابط تحميل الملف:

<a href="{{ url('read/'.$file->id) }}">اقرأ</a>

لكن عند فتح الرابط، تظهر لي خطأ 404 داخل الإطار: "الصفحة التي تبحث عنها غير موجودة، فما الخطأ؟"

Recommended Posts

  • 0
نشر

يمكنك محاولة فعل ذلك من خلال تقيد المستخدم بعدة طرق و ليكن بعلمك انه يجب ان يتحول الملف لجهاز المستخدم حتى يتم عرضه و لكن سنحاول انخه لا يقوم بتحميله من خلال
اولا :- تعطيل الزر الايمن بالفأرة  حتى لا يقوم بفتح القائمة التي تساعده في التحميل و الطباعة

<iframe id="pdfFrame" height="500" width="500" src="{{ asset($files->file_path) }}" frameborder="0"></iframe>

<script>
    document.getElementById('pdfFrame').oncontextmenu = function() {
        return false;
    };
</script>

ثانيا وضع صورة على الملف :-
 

<div style="position: relative; width: 500px; height: 500px;">
    <iframe height="500" width="500" src="{{ asset($files->file_path) }}" frameborder="0"></iframe>
    <img src="/images/overlay.png" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;">
</div>

ثالثا استخدام بعض المكتبات لعرض الملف :- 
 

<script src="https://mozilla.github.io/pdf.js/build/pdf.js"></script>

<div id="pdf-container"></div>

<script>
    var url = "{{ asset($files->file_path) }}";
    var pdfjsLib = window['pdfjs-dist/build/pdf'];

    pdfjsLib.GlobalWorkerOptions.workerSrc = "https://mozilla.github.io/pdf.js/build/pdf.worker.js";

    var loadingTask = pdfjsLib.getDocument(url);
    loadingTask.promise.then(function(pdf) {
        pdf.getPage(1).then(function(page) {
            var scale = 1.5;
            var viewport = page.getViewport({ scale: scale });

            var container = document.getElementById("pdf-container");
            container.appendChild(page.getViewport({ scale: scale }).canvas);
        });
    });
</script>

تذكر انه يمكن التغلب على هذه الطرق من خلال استخدام بعض الادوات و تحميل الملف ولكن هذه الطرق ستغلق هذا الامر على الكثير 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...