Halo,
Saya mencoba mengintegrasikan perpustakaan pdf.js dengan aplikasi elektron. Alasan utama di balik melakukan itu adalah untuk memiliki penampil pdf di aplikasi dan untuk mencetak dokumen.
Pertama-tama, saya mencoba mengintegrasikan perpustakaan dengan dua cara:
Saya memiliki pertanyaan berikut:
</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);
});
});
Namun, ini hanya bagian dari hal yang saya inginkan. Saya ingin kontrol penampil seperti di viewer.html. Jadi, saya mencoba membuka jendela baru dengan viewer.html langsung seperti ini:
var pdfPath = __dirname + '/pdfs/trial.pdf';
mainWindow.loadURL('file://' + __dirname + '/generic/web/viewer.html?file=' + pdfPath);
Saya dapat melihat penampil, tetapi saat memuat file pdf, itu menimbulkan kesalahan ini di konsol:
Tidak tertangkap (dalam janji) TypeError: PDFJS.getDocument bukan fungsi
di Object.pdfViewBuka sebagai terbuka
di webViewerInitialized (file:///.../src/generic/web/viewer.js:7686:26)
Saya tidak dapat mencari tahu apa yang saya lakukan salah di sini. Apakah ini cara yang disarankan? Juga, jika saya ingin menyematkan seluruh penampil itu di beberapa kanvas atau iframe, bagaimana saya bisa melakukannya? Akan menyenangkan memiliki daftar API dalam proyek untuk melakukan tugas-tugas umum tertentu seperti yang saya coba. Maaf, jika sudah ada dan saya tidak dapat menemukannya.
Akan sangat dihargai jika seseorang dapat membantu saya di sini.
Terima kasih sebelumnya...
Konfigurasi:
Versi PDF.js: 0.8.0
Itu benar-benar versi lama. Versi yang sudah dibuat sebelumnya dari rilis kami (atau gulp generic
one) akan berfungsi dengan baik, dengan pengecualian bahwa Anda dapat memuat pdf ke Uint8Array sendiri.
PDFJS.getDocument bukan fungsi
Itu menunjukkan bahwa perpustakaan inti PDF.js (file './build/pdf.js') tidak dimuat.
Terima kasih atas balasan Anda yang cepat, Yuri.
Itu benar-benar versi lama.
Saya tidak yakin bagaimana saya mendapatkan versi lama itu. Saya tidak melakukan sesuatu yang istimewa selain git clone git://github.com/mozilla/pdf.js.git
untuk mendapatkan proyek. Namun, jika saya lihat di sini, package.json masih menunjukkan 0.8.0.
Versi yang sudah dibuat sebelumnya dari rilis kami (atau versi generik gulp) akan berfungsi dengan baik, dengan pengecualian bahwa Anda dapat memuat pdf ke Uint8Array sendiri.
Apakah Anda berbicara tentang zip yang dibuat sebelumnya ini? .
Itu menunjukkan bahwa perpustakaan inti PDF.js (file './build/pdf.js') tidak dimuat.
Setelah melakukan tegukan generik, saya mendapat pdf.js dan pdf.worker.js di dua tempat. Satu di luar direktori generik dan satu di dalam direktori generik/build/. Saat ini saya menunjuk ke bagian luar. Bisakah Anda memberi tahu saya jika saya menunjuk ke yang salah?
Sekali lagi terima kasih atas bantuannya!
package.json masih menunjukkan 0.8.0.
package.json tidak berisi versi perpustakaan yang dibangun, lihat file pdf.js atau properti PDFJS.version untuk nomor versi yang benar.
Bisakah Anda memberi tahu saya jika saya menunjuk ke yang salah?
Keduanya akan identik. Anda harus menggunakan seluruh folder "generic/", jadi Anda akan memiliki pdf.js di tempat yang tepat.
lihat file pdf.js atau properti PDFJS.version
Dikatakan versi: 1.4.174
Juga, saya menemukan masalahnya. Saya menyalin hal yang benar dari direktori generik; namun ketika saya membuka jendela dengan url viewer.html; properti window harus memiliki ini:
webPreferences: {
nodeIntegration: false
}
Dan itu dapat memuat dengan baik sekarang.
Terima kasih atas bantuan Anda Yury!
Komentar yang paling membantu
Dikatakan versi: 1.4.174
Juga, saya menemukan masalahnya. Saya menyalin hal yang benar dari direktori generik; namun ketika saya membuka jendela dengan url viewer.html; properti window harus memiliki ini:
webPreferences: { nodeIntegration: false }
Dan itu dapat memuat dengan baik sekarang.
Terima kasih atas bantuan Anda Yury!