Pdf.js: PDFJS.getDocument لا يعمل

تم إنشاؤها على ٣١ ديسمبر ٢٠١٤  ·  12تعليقات  ·  مصدر: mozilla/pdf.js

أنا أقوم بتشغيل تطبيق grails على مضيف محلي (أعلم أن هناك مشكلة في pdf.js ونظام الملفات المحلي) وبدلاً من استخدام ملف: url الذي أعرف أنه سيفشل ، فأنا أقوم بتمرير مصفوفة جافا سكريبت مكتوبة وهي ما زال يفشل. لكي أكون صحيحًا ، لا تخبرني بأي شيء ولكن "تحذير: إعداد عامل وهمي". وبعد ذلك لا تفعل شيئًا.

this.base64ToBinary = function(dataURI) {
        var BASE64_MARKER = ';base64,';
        var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
        var base64 = dataURI.substring(base64Index);
        var raw = window.atob(base64);
        var rawLength = raw.length;
        var array = new Uint8Array(new ArrayBuffer(rawLength));

        for(i = 0; i < rawLength; i++) {
        array[i] = raw.charCodeAt(i);
        }
        return array;
    };

PDFJS.disableWorker = true; // due to CORS

// I convert some base64 data to binary data here which comes back correctly
var data = utilities.base64ToBinary(result);

PDFJS.getDocument(data).then(function (pdf) {
         //nothing console logs or reaches here
         console.log(pdf);
}).catch(function(error){
//no error message is logged either
            console.log("Error occurred", error);
        });

أنا أتساءل إذا لم أقم بإعداده بشكل صحيح؟ هل يمكنني استخدام هذه المكتبة في جانب العميل فقط من خلال تضمين pdf.js فقط أم أحتاج إلى تضمين viewer.js أيضًا؟ ولاحظت أيضًا ملف التوافق ... الإعداد ليس واضحًا جدًا وهذا المثال http://jsfiddle.net/epistemex/LUNaJ/ يعمل ولم أفهم الفرق. أيضًا إذا استخدمت عنوان url المزود في هذا المثال ، فإنه يقول نفس الشيء أيضًا.

screen shot 2014-12-31 at 11 59 17 am

1-other 4-information-requested

التعليق الأكثر فائدة

"لن يساعد ذلك في حالة تغيير اسم pdf.js أو تغيير جزء من الملف المدمج." صحيح ولكن بصرف النظر عن مشاكلي الخاصة باستخدام الكرات ، يجب عليك فقط تكرارها على أي حال لجعل الطريقة القياسية أكثر دقة. إنها مليئة بالثقوب.

ال 12 كومينتر

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

لا يمكننا المساعدة حتى نرى المثال الكامل ويكون لدينا طريقة لإعادة إنتاج المشكلة محليًا. يرجى قراءة https://github.com/mozilla/pdf.js/blob/master/CONTRIBUTING.md وتقديم المزيد من المعلومات كما هو مطلوب.

yurydelendik كيف لي أن أحصل على ذلك لك ، يعمل مثال الكمان ولكن نفس الكود بالضبط لا يعمل على بيئتي ... وبالتالي لا يمكنني أن أعود إليك ... أفضل ما يمكنني التفكير فيه هو ذلك يمكنني إجراء جلسة Hangout على google أو screenhero معك لتظهر لك.

هل يمكنك على الأقل أن تعطيني بعض الاحتمالات؟

مجرد التخمين (من التجربة):

  • محرك webkit / javascript القديم (يتم إصلاح هذا عادةً عن طريق إضافة التوافق. js)
  • إصدار PDF.js القديم (يرجى استخدام الإصدار الذي تم إصداره أو npm / bower pdfjs-dist)
  • تكوين خاطئ لـ disableWorker / workerSrc
  • خطأ بسيط لمراسل / مطور المشكلة

ما هو pdf.worker.js؟

أنا أستخدم أحدث إصدار. هل هناك أيضًا بعض التوثيق حول DisableWorker / workerSrc؟

pdf.worker.js هو الملف الرئيسي الذي يقوم بتحليل PDF (خارج سلسلة الصفحات الرئيسية). عند disableWorker = true ، سيتم تحميله في الصفحة الرئيسية تلقائيًا (من موقع workerSrc) وحظر واجهة المستخدم لاحتياجات تحليل PDF. راجع https://github.com/mozilla/pdf.js/blob/master/src/display/api.js#L65

آه ، حسنًا ، اكتشفت ما هي المشكلة ... ربما يجب عليك تدوين ذلك في الوثائق أو توضيحها. لذلك إذا لم تحدد العامل workerSrc ، فحاول اكتشاف ما هو عليه باستخدام علامة البرنامج النصي الأخير في رأس التطبيق للذهاب وتحميله ولكن ماذا لو كان التطبيق ذو جودة عالية أو يقدم بعض ملفات UI المدمجة؟ لا يمكنك أيضًا الافتراض بشكل موثوق أن علامة البرنامج النصي الأخيرة سيكون لها المصدر الصحيح. إذا كنت تريد القيام بذلك بالطريقة الصحيحة ، فستحتاج إلى تكرار جميع علامات البرنامج النصي في الرأس بحثًا عن pdf.js في كل src ثم استخدام المصدر الصحيح بدلاً من الاستيلاء على آخر واحد.

أنا شخصياً لا أعرف أي شيء عن الكؤوس. لدينا workerSrc للتكوين لتلك الحالات.

ستحتاج إلى تكرار جميع علامات البرنامج النصي

لن يساعد ذلك في حالة تغيير اسم pdf.js أو تغيير جزء من الملف المدمج.

إغلاق باعتبارها غير صالحة.

"لن يساعد ذلك في حالة تغيير اسم pdf.js أو تغيير جزء من الملف المدمج." صحيح ولكن بصرف النظر عن مشاكلي الخاصة باستخدام الكرات ، يجب عليك فقط تكرارها على أي حال لجعل الطريقة القياسية أكثر دقة. إنها مليئة بالثقوب.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات