أهلا،
أحاول دمج مكتبة pdf.js مع تطبيق الإلكترون. السبب الرئيسي وراء القيام بذلك هو وجود عارض pdf في التطبيق وطباعة المستند.
بادئ ذي بدء ، حاولت دمج المكتبة بطريقتين:
لدي الأسئلة التالية:
</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 في المشروع للقيام ببعض المهام الشائعة مثل ما أحاول. عذرًا ، إذا كان موجودًا بالفعل ولا يمكنني العثور عليه.
سأكون ممتنا للغاية إذا كان شخص ما يمكن أن يساعدني هنا.
شكرا لك مقدما...
إعدادات:
إصدار PDF.js: 0.8.0
هذا حقا نسخة قديمة. الإصدار المبني مسبقًا من إصداراتنا (أو gulp generic
one) سيعمل بشكل جيد ، باستثناء أنه يمكنك تحميل pdf في Uint8Array بنفسك.
PDFJS.getDocument ليس وظيفة
يشير ذلك إلى أن مكتبة PDF.js الأساسية (ملف "./build/pdf.js") لم يتم تحميلها.
شكرا لردكم السريع يوري.
هذا حقا نسخة قديمة.
لست متأكدًا من كيفية الحصول على هذا الإصدار القديم. لم أفعل أي شيء خاص من git clone git://github.com/mozilla/pdf.js.git
للحصول على المشروع. ومع ذلك ، إذا رأيت هنا ، فإن package.json لا يزال يظهر 0.8.0.
يجب أن يعمل الإصدار المبني مسبقًا من إصداراتنا (أو الإصدار العام gulp) بشكل جيد ، باستثناء أنه يمكنك تحميل ملف pdf في Uint8Array بنفسك.
هل تتحدث عن هذا الملف المضغوط مسبقًا؟ .
يشير ذلك إلى أن مكتبة PDF.js الأساسية (ملف "./build/pdf.js") لم يتم تحميلها.
بعد إجراء عملية gulp العامة ، حصلت على pdf.js و pdf.worker.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
}
وهو قادر على التحميل بشكل جيد الآن.
شكرا على مساعدتك يوري!
التعليق الأكثر فائدة
تقول الإصدار: 1.4.174
أيضا ، اكتشفت المشكلة. لقد قمت بنسخ المواد الصحيحة من الدليل العام ؛ ولكن عندما أفتح نافذة بها عنوان url الخاص بـ viewer.html ؛ يجب أن تحتوي خاصية النافذة على هذا:
webPreferences: { nodeIntegration: false }
وهو قادر على التحميل بشكل جيد الآن.
شكرا على مساعدتك يوري!