Pdf.js: تشغيل pdf.js مع الإلكترون

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

أهلا،
أحاول دمج مكتبة pdf.js مع تطبيق الإلكترون. السبب الرئيسي وراء القيام بذلك هو وجود عارض pdf في التطبيق وطباعة المستند.

بادئ ذي بدء ، حاولت دمج المكتبة بطريقتين:

  1. استنساخ pdf.js في دليل منفصل وتشغيل _gulp generic_ وأي شيء حصلت عليه ضمن دليل الإنشاء ، قمت بنسخه إلى دليل src في مشروعي.
  2. من خلال تضمين وحدة العقدة في مشروعي من هنا: https://www.npmjs.com/package/pdfjs-dist-for-node

لدي الأسئلة التالية:

  • باتباع المسار الأول ، يمكنني عرض (عرض) ملف pdf (بدون عناصر تحكم العارض) في اللوحة القماشية على صفحة html الخاصة بي من خلال هذا الكود:

</div> <canvas id="theCanvas"></canvas> <div>

     PDFJS.getDocument(pdfPath).then(function getPdfHelloWorld(pdf) {
            pdf.getPage(1).then(function getPageHelloWorld(page) {
              var scale = 1.5;
              var viewport = page.getViewport(scale);

              var canvas = document.getElementById('theCanvas');
              var context = canvas.getContext('2d');
              canvas.height = viewport.height;
              canvas.width = viewport.width;

              var renderContext = {
                canvasContext: context,
                viewport: viewport
              };
              page.render(renderContext);
            });
          });

ومع ذلك ، هذا مجرد جزء من الشيء الذي أريده. أريد عناصر تحكم العارض كما هو الحال في viewer.html. لذلك ، حاولت فتح نافذة جديدة مع viewer.html مباشرة مثل هذا:

var pdfPath = __dirname + '/pdfs/trial.pdf'; mainWindow.loadURL('file://' + __dirname + '/generic/web/viewer.html?file=' + pdfPath);

تمكنت من رؤية العارض ، ولكن أثناء تحميل ملف pdf ، فإنه يلقي هذا الخطأ في وحدة التحكم:

غير معلوم (في الوعد) TypeError: PDFJS.getDocument ليس دالة
في Object.pdfViewOpen مفتوح
في webViewerInitialized (ملف: ///.../src/generic/web/viewer.js: 7686: 26)

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

  • باتباع المسار الثاني ، تمكنت من تضمين وحدة العقدة ؛ لكن القلق الذي يساورني هنا هو أنه لا يتم تحديثه كثيرًا حيث يتم تحديث هذا المشروع. الإصدار الأخير كان قبل عام. ولم يكن هناك API هناك مرة أخرى. لذلك ، لقد تركت الخطة الآن.

سأكون ممتنا للغاية إذا كان شخص ما يمكن أن يساعدني هنا.

شكرا لك مقدما...

إعدادات:

  • متصفح الويب ونسخته: Electron
  • نظام التشغيل ونسخته: OSX 10.10.5
  • إصدار PDF.js: 0.8.0
1-other

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

راجع ملف pdf.js أو خاصية إصدار PDFJS

تقول الإصدار: 1.4.174

أيضا ، اكتشفت المشكلة. لقد قمت بنسخ المواد الصحيحة من الدليل العام ؛ ولكن عندما أفتح نافذة بها عنوان url الخاص بـ viewer.html ؛ يجب أن تحتوي خاصية النافذة على هذا:

webPreferences: { nodeIntegration: false }

وهو قادر على التحميل بشكل جيد الآن.

شكرا على مساعدتك يوري!

ال 4 كومينتر

إصدار PDF.js: 0.8.0

هذا حقا نسخة قديمة. الإصدار المبني مسبقًا من إصداراتنا (أو gulp generic one) سيعمل بشكل جيد ، باستثناء أنه يمكنك تحميل pdf في Uint8Array بنفسك.

PDFJS.getDocument ليس وظيفة

يشير ذلك إلى أن مكتبة PDF.js الأساسية (ملف "./build/pdf.js") لم يتم تحميلها.

لا يزال package.json يظهر 0.8.0.

لا يحتوي package.json على إصدار المكتبة المدمج ، راجع ملف pdf.js أو خاصية PDFJS.version لمعرفة رقم الإصدار الصحيح.

هل يمكنك إعلامي إذا كنت أشير إلى الخطأ؟

كلاهما يجب أن تكون متطابقة. يجب عليك استخدام مجلد "عام /" بأكمله ، لذلك سيكون لديك ملف pdf.js في المكان المناسب.

راجع ملف pdf.js أو خاصية إصدار PDFJS

تقول الإصدار: 1.4.174

أيضا ، اكتشفت المشكلة. لقد قمت بنسخ المواد الصحيحة من الدليل العام ؛ ولكن عندما أفتح نافذة بها عنوان url الخاص بـ viewer.html ؛ يجب أن تحتوي خاصية النافذة على هذا:

webPreferences: { nodeIntegration: false }

وهو قادر على التحميل بشكل جيد الآن.

شكرا على مساعدتك يوري!

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

القضايا ذات الصلة

anggikolo11 picture anggikolo11  ·  3تعليقات

BrennanDuffey picture BrennanDuffey  ·  3تعليقات

liuzhen2008 picture liuzhen2008  ·  4تعليقات

AlexP3 picture AlexP3  ·  3تعليقات

aaronshaf picture aaronshaf  ·  3تعليقات