Pdf.js: Menjalankan pdf.js dengan elektron

Dibuat pada 30 Mar 2016  ·  4Komentar  ·  Sumber: mozilla/pdf.js

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:

  1. Mengkloning pdf.js di direktori terpisah dan menjalankan _gulp generic_ dan apa pun yang saya dapatkan di bawah direktori build, saya menyalin ke direktori src di proyek saya.
  2. Dengan memasukkan modul simpul dalam proyek saya dari sini: https://www.npmjs.com/package/pdfjs-dist-for-node

Saya memiliki pertanyaan berikut:

  • Mengikuti rute pertama, saya dapat menampilkan (pada dasarnya merender) file pdf (tanpa kontrol penampil) di kanvas pada halaman html saya melalui kode ini:

</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.

  • Mengikuti rute kedua, saya dapat memasukkan modul node; tetapi kekhawatiran yang saya miliki di sini adalah tidak sering diperbarui karena proyek ini diperbarui. Rilis terakhir adalah setahun yang lalu. Dan tidak ada API di sana lagi. Jadi, saya membatalkan rencana untuk saat ini.

Akan sangat dihargai jika seseorang dapat membantu saya di sini.

Terima kasih sebelumnya...

Konfigurasi:

  • Browser web dan versinya: Electron
  • Sistem operasi dan versinya: OSX 10.10.5
  • Versi PDF.js: 0.8.0
1-other

Komentar yang paling membantu

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!

Semua 4 komentar

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.

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!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat