Pdf.js: Tanda tangan digital dalam pdf.js

Dibuat pada 13 Jan 2012  ·  174Komentar  ·  Sumber: mozilla/pdf.js

Hai! Kami tertarik tentang kapan atau apakah Anda akan menerapkan Tampilan Data Tanda Tangan (Xades, Pades & Cades) di penampil PDF (PDF.js)

Salam

Alejandro Pinedo,
SOA-X

2-feature 4-annotations

Komentar yang paling membantu

Untuk semua orang di atas, harap gunakan tombol reaksi +1 GitHub yang baru daripada menambahkan komentar di sini.

Semua 174 komentar

Saat ini tidak ada rencana dalam waktu dekat untuk menerapkan fitur ini. Kami belum banyak melihatnya, jadi itu belum menjadi prioritas. Kami selalu mencari lebih banyak kontributor, jadi kami akan menerima patch apa pun untuk menambahkan fitur ini. Jika Anda tertarik untuk menambahkannya, silakan mampir ke saluran IRC kami (#pdfjs irc.mozilla.org) jika Anda memiliki pertanyaan.

Brendan

Hai

bagaimana keadaan saat ini tentang penerapan fitur ini?

Terima kasih

@ fermo111 Belum diimplementasikan, tapi saya akan dengan senang hati melatih seseorang yang bersedia mengambil tugas ini.

@yurydelendik Saya tertarik untuk mengimplementasikan fitur penyajian tanda tangan digital file PDF dalam pdf.js. Bagaimana saya bisa menghubungi Anda?

@wolvz tolong temukan saya di IRC irc.mozilla.org channel #pdfjs (itu paling sederhana) atau bergabunglah dengan salah satu pertemuan publik kami untuk mengkoordinasikan hal-hal.

Saya mencoba menerapkan SigWidgetAnnotation (seperti TextAnnotation, LinkAnnotation), di annotation.js, untuk mendukung tanda tangan digital di pdf.js.
Tanda tangan muncul di penampil pdf, dan saya sudah dapat mengekstrak dan memverifikasi sertifikat yang disematkan dalam objek PKCS7 yang dikodekan DER ...
Sekarang saya pindah ke langkah berikutnya, yaitu memverifikasi intisari pesan file.
Untuk itu saya perlu memiliki akses ke konten file ... Saya tidak tahu apakah itu mungkin atau tidak untuk mengaksesnya dari annotation.js, tetapi saya tidak dapat memahaminya. Hal terbaik yang bisa saya lakukan adalah mendapatkan konten di core.js menggunakan:

var contentStreamPromise = this.pdfManager.ensure (ini, 'getContentStream', []);
var dataPromises = Promise.all ([contentStreamPromise]);
dataPromises.then (fungsi (data) {
var contentStream = data [0];
var content = contentStream.str.bytes;
mengembalikan isinya;
});

Bisakah seseorang memberi tahu saya tentang cara terbaik untuk mendapatkan konten file di annotation.js?
Terima kasih sebelumnya...

Wolvz,
ada kemajuan dalam hal ini?

@yurydelendik @wolvz
Saya sangat tertarik dengan fitur tampilan tanda tangan digital. Saya mengkloning repositori wolvz dan membuat kodenya tetapi ketika saya mencoba menggunakannya, saya mendapatkan penolakan janji dengan kesalahan ini: "memerlukan tidak ditentukan". Adakah yang bisa menjelaskan apa yang menyebabkan kesalahan itu dan bagaimana saya bisa memperbaikinya? Selain itu, saya sangat ingin melanjutkan pengerjaan fitur ini. Saya telah bekerja dengan pdf di Java melalui perpustakaan iText tetapi bekerja dengan mereka dalam javascript adalah sesuatu yang belum pernah saya coba sebelumnya. Dapatkah seseorang mengarahkan saya ke beberapa dokumentasi / tutorial yang dapat mengarahkan saya ke arah yang benar sehingga saya dapat mengetahui dari mana harus memulai saat saya mencoba memindahkan fitur ini lebih jauh ke bawah?

Saya bingung. Apa yang harus saya lakukan di perpustakaan pdf.js saya untuk menunjukkan tanda tangan digital pdf dalam pdfJS

untitled

Tanda tangan dan sertifikat ini keduanya ditampilkan dalam pdf .. tetapi ketika saya membukanya di pdf.js tidak akan muncul di sana.

@ mrpandya007 , tanda tangan digital tidak muncul karena pengembang memilih untuk menyembunyikannya hingga fitur verifikasi tanda tangan berfungsi.
Jika saya ingat, jika Anda ingin mereka muncul begitu saja, Anda harus memberi komentar pada baris 389 hingga 392 di sini: https://github.com/mozilla/pdf.js/blob/master/src/core/annotation.js#L389
Tidak yakin, dan saya tidak bisa mengujinya sekarang.

@wolvz ,

Tolong jawab saya .... apa yang harus saya lakukan .. Saya bisa memberikan pdf itu untuk diuji

Belum ada dukungan yang baik untuk tanda tangan digital, jadi ini harus dilaksanakan.

Berapa hari yang dibutuhkan untuk memperbaiki masalah tanda tangan digital ini karena kami bergantung pada lib Anda.

Mungkin butuh waktu lama karena fitur ini harus dikembangkan oleh seseorang dan saat ini ada masalah dengan prioritas lebih tinggi.

heading

Mengapa saya menghadapi masalah "=" masuk ke Judul, hanya di pdf.js, setelah mengunduh file itu hilang.
solusi apa pun. Itu hanya terjadi di pdf yang dihasilkan telerik.

@ mrpandya007 Harap jangan memposting masalah yang tidak terkait di dalam masalah lain. Buka masalah terpisah untuk masalah itu.

Saya juga mengalami masalah yang sama. Meskipun saya tidak memerlukan validasi tanda tangan, dalam kasus saya cukup cukup untuk hanya menampilkan gambar tanda tangan. Mungkin sampai validasi tanda tangan diimplementasikan daripada tidak menampilkan gambar, akan lebih baik untuk menampilkan gambar dan menganotasinya dengan teks kecil yang mengatakan sesuatu seperti "Validasi tanda tangan tidak diterapkan. Status tanda tangan tidak diketahui"? Jadi setidaknya secara visual pdf akan menunjukkan apa yang Anda harapkan.

Apakah ada jadwal kapan masalah ini akan ditangani? Atau haruskah kita mempertimbangkan produk lain?
pdfjsissue

Sejauh yang saya tahu, belum ada yang mengerjakan ini, jadi jika ada yang mau mengerjakan ini, silakan kirimkan PR.

Hai,
Versi PDF.JS yang hanya dapat menampilkan bidang tanda tangan digital seharusnya cukup untuk banyak pengguna ... Apakah ada "garpu" yang dapat melakukan ini?
Salam

@DORNINEM Anda hanya perlu mengomentari bagian kode yang menyembunyikan anotasi tanda tangan.
Tapi bagaimanapun, ini adalah garpu yang Anda minta: https://github.com/wolvz/pdf.js

@bayu_joo Terima kasih banyak.
Saya bertanya-tanya mengapa fitur ini tidak ada dalam versi resmi, karena berfungsi dengan sangat baik. Saya menguji dengan beberapa file PDF saya yang ditandatangani (dari 1 hingga 6 bidang tanda tangan yang berbeda) dan hasilnya sempurna!
Saya benar-benar yakin bahwa kebutuhan sebenarnya adalah menampilkan bidang ini, bukan untuk memvalidasi tanda tangan. Validasi tanda tangan paling baik dilakukan di sisi server karena memerlukan beberapa kali sertifikat tidak diinstal pada repositori sertifikat lokal.

Halo,

Seseorang dapat menjelaskan baris mana yang harus kami komentari atau hapus komentarnya untuk memungkinkan pdf.js menampilkan tanda tangan digital?

Terima kasih atas semua informasi :)

@maximlefebvre Menurut https://github.com/wolvz/pdf.js/commit/7df3f4fe6e21b888358fd7718cb15e3c266ba066 , itu seharusnya cukup untuk membiarkan PDF.js menampilkan tanda tangan. Namun perlu dicatat bahwa ini belum diverifikasi oleh tim PDF.js sebagai solusi yang stabil (oleh karena itu mengapa belum ada dalam basis kode resmi), tetapi mungkin berfungsi sebagai solusi sementara.

Kami tertarik untuk menerapkan verifikasi tanda tangan. Sepertinya @wolvz mulai mengerjakan ini tetapi tidak menyelesaikannya - apakah Anda memiliki sebagian kode yang dapat kami

@wolvz , dapatkah Anda membantu kami dengan membuat catatan kecil untuk memahami repo Anda. Saya tidak dapat memahami cara mulai memeriksa kode Anda. Kami mencoba menerapkan tanda tangan dan kami mungkin dapat menyelesaikan proyek Anda dan membantu komunitas.

Kami telah menerapkan baik penandatanganan maupun verifikasi tanda tangan PDF di browser menggunakan https: // pkijs , Anda dapat melihat demo verifikasi tanda tangan awal di sini: https://pkijs.org/examples/PDFexample.html kami belum terintegrasi dengan PDFjs tetapi akan melakukan itu dalam waktu yang tidak lama lagi. Tujuan kami adalah untuk merilis sebagian besar ini sebagai OSS dan mengembalikan semua perubahan pada PDFj yang diperlukan untuk membuat integrasi lancar.

Luar biasa, terima kasih @rmhrisk! Namun, saya tidak yakin cara membuat file bundel CA. Apakah Anda memiliki detail tentang cara melakukannya? Saya akan membayangkan ketika ini terintegrasi dengan pdf.js itu akan menjadi lebih "pasang dan mainkan" di mana ia datang dengan Adobe Root CA secara default dan dapat memverifikasi rantai sertifikat, bukan? Dan apakah Anda memiliki garis waktu yang diharapkan untuk integrasi pdf.js? Pekerjaan Anda sangat dihargai!

Ada satu di sini: http://curl.haxx.se/ca/cacert.pem dan satu diperiksa ke dalam repositori di bawah sampel.

Ada alat untuk membuatnya di sini: https://github.com/PeculiarVentures/tl-create

Saya tidak dapat membagikan ETA saat ini, kami terbatas pada sumber daya dan ini penting bagi kami, tetapi kami perlu menyelesaikan beberapa bagian yang lebih rumit terlebih dahulu.

Saya mencoba yang Anda tautkan, serta beberapa sertifikat yang saya coba ekstrak dari PDF menggunakan Adobe Reader, tetapi saya selalu mendapatkan kesalahan "TypeError: Can't read property 'signature_time_stamp' of undefined" (di Safari / Chrome stable / Chrome kenari).

Kebetulan saya punya waktu untuk minggu depan ini, jadi beri tahu saya jika saya dapat membantu menggabungkan ke pdf.js dengan cara apa pun.

Sampel tersebut hanya mendukung tanda tangan dasar, tanpa stempel waktu atau LTV untuk saat ini. Jangan ragu untuk menghubungi saya di rmh di unmitigatedrisk dot com

Ah, begitu. Sebagai referensi, akhirnya membuatnya berfungsi di Chrome / Firefox (tetapi bukan Safari, yang tampaknya hanya mendukung WebCrypto yang diawali ) menggunakan bundel CA ini dan

Ya itu juga, ini bukan hanya masalah yang diawali tetapi mereka juga hanya mendukung webcrypto yang cukup untuk menangani kasus drm netflix. Misalnya mereka tidak mengizinkan Anda mengekspor kunci publik untuk pasangan kunci yang Anda buat !? Ini adalah sumber yang bagus untuk memverifikasi dukungan browser - https://diafygi.github.io/webcrypto-examples/

@viveksjain Dapatkah Anda memastikan bagaimana Anda membuatnya bekerja di Chrome / Firefox

Saya sudah mencoba menggunakan plugin pengembangan di firefox namun tampaknya masih gagal menunjukkan tanda tangan.
http://mozilla.github.io/pdf.js/extensions/firefox/pdf.js.xpi

@complience dia mendapatkan kode sampel yang terletak di https://pkijs.org/examples/PDFexample.html berfungsi bukan PDFjs

Hai @complience , saya memiliki bukti konsep yang berfungsi di https://github.com/viveksjain/pdf.js/tree/sig-verify-support. Anda dapat mencobanya dengan menggunakan git clone --recursive https://github.com/viveksjain/pdf.js.git . Dengan sedikit lebih banyak pekerjaan, itu harus siap untuk permintaan tarik ke repo ini, tetapi saya belum punya waktu.

@viveksjain bagus! Apa yang masih dibutuhkan sebelum siap untuk permintaan tarik?

+1 Senang mendapatkan fungsi ini.

Ya, ini akan menjadi nilai tambah yang besar bagi komunitas, membuka pintu untuk banyak kasus penggunaan. Terima kasih!!

1 untuk fungsi ini

1 untuk fungsi ini

Untuk semua orang di atas, harap gunakan tombol reaksi +1 GitHub yang baru daripada menambahkan komentar di sini.

+1 untuk functionallity ini

👍 + 1 untuk fungsi ini

Sekali lagi, gunakan tombol reaksi GitHub di komentar atas untuk meningkatkan fungsi ini, yang akan membantu kami memprioritaskan masalah. Menambahkan komentar "+1" menyebabkan pemberitahuan yang tidak perlu bagi pengembang.

"TypeError: Tidak dapat membaca properti 'signature_time_stamp' dari undefined" menggunakan cabang @viveksjain

+1. Menunggu fitur ini! ..

Kapan fungsi ini akan tersedia? Apa yang terjadi dengan kemajuan viveksjain?

@complience Hai, Saya memiliki bukti konsep yang berfungsi di https://github.com/viveksjain/pdf.js/tree/sig-verify-support. Anda dapat mencobanya dengan menggunakan git clone --recursive https://github.com/viveksjain/pdf.js.git. Dengan sedikit lebih banyak pekerjaan itu Harus siap untuk permintaan tarik ke esta repo, tapi saya belum punya waktu.

@lexcorp Sayangnya ini menjadi prioritas yang lebih rendah bagi saya setelah pesan saya sebelumnya. Saya akan melihat apakah saya dapat melakukannya, tetapi tidak akan membuat janji yang tidak dapat saya tepati…

Saya mencoba menyusun versi ini: https://github.com/viveksjain/pdf.js/tree/sig-verify-support
Ketika saya memasukkan perintah: node make generic
Saya mendapatkan pesan: ### Mendapatkan nomor build ekstensi
Dan proses kompilasi tidak dilakukan

Bagaimana saya bisa mengatasi kesalahan ini?
Saya melakukan sesuatu yang salah?
Mengapa tidak mengakhiri kompilasi?

@lexcorp Jika masih ada minat, setidaknya versi saya cukup diperbarui untuk dikompilasi. : +1:

Hai Vivek, ya saya masih tertarik, terima kasih ...

2016-12-12 12:55 GMT-06: 00 Gustavo Zambonin [email protected] :

@lexcorp https://github.com/lexcorp Jika masih ada minat, di
setidaknya versi saya cukup diperbarui untuk dikompilasi. 👍

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/mozilla/pdf.js/issues/1076#issuecomment-266518165 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AFfB-LbmIVIrJLnxwJlm8aDITDKh5tWLks5rHZi5gaJpZM4BlvMP
.

Hai Gustavo, terima kasih ...

2016-12-12 12:55 GMT-06: 00 Gustavo Zambonin [email protected] :

@lexcorp https://github.com/lexcorp Jika masih ada minat, di
setidaknya versi saya cukup diperbarui untuk dikompilasi. 👍

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/mozilla/pdf.js/issues/1076#issuecomment-266518165 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AFfB-LbmIVIrJLnxwJlm8aDITDKh5tWLks5rHZi5gaJpZM4BlvMP
.

apakah ada masalah mengapa dukungan untuk tanda tangan digital tidak ditarik ke pdf.js?

Silakan ikuti diskusi di # 7702.

Saya tertarik untuk mendengar dari orang-orang tentang kasus penggunaan mereka untuk verifikasi tanda tangan di PDFjs. Silakan email saya di ryan di peculiarventures.com dengan kasus penggunaan Anda.

Saya juga tertarik untuk mendengarkan kasus penggunaan Anda untuk masuk ke PDFjs, jika Anda peduli dengan skenario itu, saya juga ingin mendengar kasus penggunaan Anda.

Cabang sig-verifikasi-dukungan dari pdf.js tidak mendukung IE dan firefox dengan sempurna karena WebCrypto tidak bisa didapatkan, ada ide untuk menghadapinya?

Hai orang - Apakah verifikasi tanda tangan digital sudah berfungsi?

Pertanyaan yang sama di sini: Apakah tanda tangan digital seharusnya berfungsi dengan versi stabil terbaru yang dapat diunduh dari https://mozilla.github.io/pdf.js/getting_started/#download ?

FWIW: Saya telah menguji rilis beta yang tersedia saat ini dan tidak dapat melihat tanda tangan apa pun. Satu-satunya hal yang saya perhatikan adalah baris berikut di konsol browser:

Warning: Unimplemented widget field type "Sig", falling back to base field type

Tidak, tanda tangan digital belum diimplementasikan. Siapapun yang mau mengerjakan ini dipersilakan untuk mengajukan permintaan penarikan. Terima kasih.

Saya ingin mengerjakan fungsi ini. Seseorang dapat memberi saya beberapa pedoman tentang komponen internal PDF.js?

Ada beberapa pekerjaan awal yang disebutkan di atas yang mungkin dapat Anda gunakan. Pastikan untuk membaca wiki untuk gaya kode dan instruksi pengujian.

@wolvz : hai bagian mana di viewer.js yang tidak dikomentari? repositori Anda tampaknya merupakan sumber asli untuk pdf.js

sebagian besar pengguna akan menggunakan file versi stabil.

Karena plugin Adobe Acrobat akan menjadi usang ketika Mozilla Firefox 59 ESR akan dirilis, fitur seperti menampilkan tanda tangan digital sekarang benar-benar diperlukan di pdf.js untuk pengguna perusahaan.

Kami telah mengimplementasikan solusi tanda tangan digital berdasarkan PKIjs dan PDFjs yang mampu memverifikasi dan membuat tanda tangan digital. Anda dapat melihat contohnya dengan melihat hukum Tanda Tangan Digital AS di sini .

image

Penampil saat ini mempercayai CA di Daftar Kepercayaan eIDAS serta penerbit S / MIME tepercaya Mozilla.

Jika Anda mengalami masalah, email saya di [email protected] dengan file contoh jika ada.

@rmhrisk dapatkah Anda memberikan repo github dengan kode contoh?

@xrkolovos sebagian besar pekerjaan yang diperlukan untuk menandatangani dan memverifikasi pekerjaan telah bersumber terbuka; itu termasuk https://github.com/PeculiarVentures/PKI.js , https://github.com/PeculiarVentures/ASN1.js , https://github.com/PeculiarVentures/xadesjs/ , https://github.com / PeculiarVentures / tl-create , dan https://github.com/PeculiarVentures/webcrypto-liner.

Kami juga akhirnya membuat perpustakaan PDF kami sendiri (meskipun kami menggunakan PDFjs untuk rendering) sehingga kami dapat membuat berbagai jenis tanda tangan yang diizinkan oleh PDF. Perpustakaan ini pada akhirnya akan dipublikasikan tetapi belum siap untuk konsumsi publik pada saat ini.

Sumber untuk pemirsa kami tidak akan dipublikasikan tetapi dengan perpustakaan di atas seseorang dapat mereproduksi verifikasi pada pemirsa mereka sendiri. Kami memiliki contoh dasar tentang cara melakukannya di sini: https://pkijs.org/examples/PDFexample.html ini hanya perlu diintegrasikan ke dalam pemirsa Anda.

kapan akan digabungkan dengan pdf.js?

@Aarbel pada saat ini saya tidak tahu kapan kami akan menemukan waktu untuk merefaktor apa yang kami miliki sehingga dapat dengan mudah digabungkan tetapi kami ingin melihat verifikasi menemukan dirinya dalam PDFjs. Dengan itu, tim PDFjs sebelumnya telah menyatakan keprihatinan atas ukuran yang akan diwakili oleh fitur ini karena ketergantungan yang diperlukan. Selama ini menjadi perhatian, tidak masuk akal untuk menghabiskan waktu teknisi untuk melakukan pekerjaan ini.

IMHO, tidak menerapkannya sebelum Firefox 59 (ESR) dirilis berarti akhir dari Firefox di perusahaan jika Chrome atau Edge dapat membaca tanda tangan digital.

@FrenchHope tidak ada chrome dari firefox yang dapat memverifikasi tanda tangan digital.

Ada pembaruan tentang fungsi ini?

@Snuffleupagus @yurydelendik @timvandermeij ? :)

Seperti yang saya jelaskan di https://github.com/mozilla/pdf.js/pull/7702#pullrequestreview -4.866.355, langkah pertama adalah untuk menciptakan sebuah API abstrak yang memungkinkan untuk mengintegrasikan setiap kustom PKI / kripto dengan PDF.js.

@rmhrisk Saya tidak peduli dengan pengguna Chrome. Saya peduli dengan pengguna perusahaan Firefox. Banyak yang sekarang akan menggunakan browser Edge atau Internet Explorer jika Firefox tidak dapat lagi memverifikasi tanda tangan digital dengan plugin Adobe Acrobat Reader.

Banyak perusahaan bermigrasi ke Windows 10 sekarang ...

Baik Edge maupun IE.

@rmhrisk IE bisa, dengan Adobe Acrobat Reader ActiveX.

sunting: Edge dapat menampilkan tanda tangan digital tetapi tidak memberi tahu Anda tentang validitas tanda tangan seperti yang dilakukan Adobe Acrobat Reader.

ActiveX sudah usang dan akhirnya tidak akan berfungsi.

Edge Tidak menurunkan tanda tangan digital, Edge tidak menampilkan gambar dalam anotasi terlepas dari status tanda tangan.

Halo, bagaimana status fitur ini saat ini?

Saat ini tidak sedang dikerjakan, tetapi baru-baru ini seseorang menunjukkan minat pada kode di atas di IRC. Langkah pertama adalah https://github.com/mozilla/pdf.js/issues/1076#issuecomment -374244765.

Hai, apakah Anda memiliki tanggal yang diharapkan seperti Dic 2018 atau mungkin 2019 untuk merilis API itu?
Terima kasih untuk pdf viewernya, bekerja dengan sangat baik

Saya ingin menerapkan perbaikan sederhana yang disebutkan di atas ... Mengomentari baris berikut:

// Hide signatures because we cannot validate them.
          if (data.fieldType === 'Sig') {
              _this2.setFlags(AnnotationFlag.HIDDEN);
          }

Namun, ini menyebabkan kesalahan di konsol (dari util.js: 418). Adakah yang tahu apa yang menyebabkan masalah ini (Selain fakta bahwa tanda tangan sekarang ditampilkan)?

Kesalahan:

Uncaught (in promise) DOMException: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': function nonSerializableClosure() {
          return nonSerializable; // creating closure on some variable
        } could not be cloned.
    at eval (http://localhost:8888/src/shared/util.js:418:20)

@brianholic
Saya mencoba dan jika Anda berkomentar

 if (data.fieldType === 'Sig') {
      warn('unimplemented annotation type: Widget signature');
     // this.setFlags(AnnotationFlag.HIDDEN);
    }

di pdf.worker.js bawaan, lalu berfungsi.

Akan lebih baik untuk setidaknya memberikan opsi untuk ini. Dalam kasus kami misalnya, kami sudah tahu bahwa tanda tangan itu valid, karena kami memvalidasi tanda tangan sebelumnya.

@strazovan Terima kasih, dan setuju. Saya membuat sebuah bendera yang dapat disetel di default_preferences.json. Saya dapat memposting perubahan tersebut jika Anda tertarik!

@brianholle Halo, saya akan mengikuti contoh Anda. Beranotasi dengan kode ini, chrome ditampilkan secara normal, tetapi gambar yang ditandatangani secara digital di browser IE mengaburkan teks.

@hanxiaodao Anda mengatakan itu ketika mengomentari kode pemblokiran:

 if (data.fieldType === 'Sig') {
      warn('unimplemented annotation type: Widget signature');
      // this.setFlags(AnnotationFlag.HIDDEN);
 }

Anda mengalami masalah saat menampilkan di IE?

@brianholle Terima kasih atas balasan Anda. Saya mengikuti contoh Anda, tetapi ada masalah di IE 11. Bab merah dari tanda tangan digital mengaburkan konten teks.
Ini efeknya pada chrome.
chrome pic
Ini adalah efek pada IE11.
ie11_pic

Bisakah kita mendapatkan perkiraan dari pengelola jika ada upaya untuk dimasukkan ke dalam verifikasi tanda tangan?

Ini bukan prioritas bagi kami saat ini, tetapi jika ada yang ingin berkontribusi (lihat komentar di atas untuk mengetahui bagaimana penerapannya), maka kami bersedia mempertimbangkan untuk mengintegrasikan ini di PDF.js.

Kami juga tertarik untuk menunjukkan tanda tangan digital yang tidak dapat diverifikasi. Silakan lihat contoh terlampir.
Verpf-Erklärg-Bundesdatenschutz-Sig.pdf

ketika saya berkomentar:
if (data.fieldType === 'Sig') {
// this.setFlags (AnnotationFlag.HIDDEN);
}

kesalahan:

message_handler.js:87 Uncaught (in promise) DOMException: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': #<DedicatedWorkerGlobalScope> could not be cloned.
    at eval (http://localhost:8888/src/shared/message_handler.js:87:21)

dan mengapa tidak merender "div. annotationLayer"

Hahaa, aku tahu yang ini ... ini terkait dengan # 10350. Jadi Anda perlu mengomentari baris ini:
// this.setFlags (AnnotationFlag.HIDDEN);
dan tambahkan baris ini setelah itu:
data.fieldValue = null;

Bagaimana cara mengkonfigurasi pdf atau pdf_viewer untuk mengaktifkan util.js yang mengontrol sakelar yang ditampilkan segel? Ada beberapa opsi AnnotationFlag di file util.js seperti INVISIBLE 0x01 、 HIDDEN 0x02. Saya memodifikasi AnnotionFlag di pdf.worker.js dari HIDDEN menjadi PRINT. Dapatkah saya mengonfigurasinya tanpa cara ini?

Harus menjadi fitur yang sangat bagus. Semoga ini akan segera menjadi fitur!

Ada yang tahu solusi yang dapat diandalkan untuk ini? Mengedit file yang dibangun mungkin hanya berfungsi secara lokal atau untuk tujuan pengujian tetapi tidak lebih dari itu.

Apakah pdfjs proyek mati? Mengapa mereka tidak menerapkan selama bertahun-tahun fitur yang paling dicari ??

image

Saya ingin mencapai bahwa saya dapat menunjukkan pemberitahuan kecil di suatu tempat di PDF.js bahwa tanda tangan digital tidak divalidasi. Saya mendapatkan itu berfungsi di Chrome, tetapi tidak di browser lain. Ini jauh dari kasus terbaik, tetapi kami benar-benar ingin menunjukkan tanda tangan tersebut meskipun tidak 100% divalidasi. Saya telah mencoba untuk mengubah kode pdf.worker.js pada bagian di mana this.setFlags (AnnotationFlag.HIDDEN); berdiri. Saya telah menambahkan konstruksi "document.getElementbyId" di mana saya menunjukkan penampung saya ketika ada 1 atau lebih tanda tangan. Tetapi semua browser (kecuali chrome) tidak mengenali "dokumen". Apakah ada opsi untuk menambahkan properti pada dokumen atau sesuatu, dan menggunakannya di viewer.js? Ada lebih banyak konstruksi dengan getElementbyId. Bantuan apa pun akan luar biasa.

Kami baru-baru ini menggabungkan penampil kami yang mendukung verifikasi tanda tangan ke dalam komponen web dan iframe; Anda dapat mengetahui lebih lanjut tentang cara menggunakannya di sini: https://verify.ink/

rmhrisk itu bagus !!!

@brianholle Terima kasih atas balasan Anda. Saya mengikuti contoh Anda, tetapi ada masalah di IE 11. Bab merah dari tanda tangan digital mengaburkan konten teks.
Ini efeknya pada chrome.
chrome pic
Ini adalah efek pada IE11.
ie11_pic
Saya memiliki pertanyaan yang sama di IE, apakah Anda sudah memecahkannya?

Organisasi kami terdiri lebih dari 2000 orang. Semuanya menggunakan Chrome, bukan Firefox karena Firefox tidak dapat menampilkan tanda tangan PDF dengan benar.
Saya pikir ini harus menjadi prioritas Mozilla.

@wolvz :

+1

+1

Kami baru-baru ini menggabungkan penampil kami yang mendukung verifikasi tanda tangan ke dalam komponen web dan iframe; Anda dapat mengetahui lebih lanjut tentang cara menggunakannya di sini: https://verify.ink/

@tokopedia
Ryan, sudahkah Anda mempertimbangkan untuk membuka versi visualisator ini untuk komunitas?

Kami telah mengimplementasikan solusi tanda tangan digital berdasarkan PKIjs dan PDFjs yang mampu memverifikasi dan membuat tanda tangan digital. Anda dapat melihat contohnya dengan melihat hukum Tanda Tangan Digital AS di sini .

image

Penampil saat ini mempercayai CA di Daftar Kepercayaan eIDAS serta penerbit S / MIME tepercaya Mozilla.

Jika Anda mengalami masalah, email saya di [email protected] dengan file contoh jika ada.

@tokopedia
Ryan, sudahkah Anda mempertimbangkan untuk membuka versi visualisator ini untuk komunitas?

@lexcorp kami membuat https: /verify.ink sehingga Anda dapat dengan mudah menyematkan penampil kami sebagai komponen web.

Menambahkannya mudah:

<html>
  <body>
    <verify-viewer  url="https://verify.ink/assets/documents/electronic_records_and_signatures_in_commerce.pdf"  show-signature-if-present="true"  notify-if-not-signed="true"  sign="true"  download="true"></verify-viewer><script type="module" src="https://verify.ink/webcomponent/index.js"></script>
    </body>
</html>

Kami baru-baru ini juga menambahkan dukungan untuk penyimpanan root kustom:
https://verify.ink/guides#root -certificates

Dari berbagai utas yang terkait dengan tanda tangan digital, saya mendapat kesan bahwa alasan utama dari kemajuan yang hilang adalah karena tidak dapat memverifikasi tanda tangan sebagai prasyarat untuk menampilkannya.

Apakah masuk akal untuk membedakan dua kasus penggunaan "Verifikasi tanda tangan" dan "Tampilkan tanda tangan"?

Saya pikir ada banyak kasus penggunaan di mana hanya menampilkan tanda tangan yang belum diverifikasi (jika diperlukan dengan peringatan yang ditambahkan oleh tim proyek tertentu) adalah semua yang diperlukan dan cukup. Jika ini sudah dimungkinkan dengan sedikit modifikasi pada kode, mengapa itu bukan fungsi resmi yang dapat dinyalakan atau dimatikan?

Masalah dengan menampilkan tanda tangan jika tidak valid adalah Anda memberikan kesan valid kepada pengguna.

Tanda tangan digital, tidak seperti tanda tangan basah sintetis, dimaksudkan untuk menunjukkan keaslian tanda tangan dan maksud yang terkait dengannya.

Dengan menampilkan gambar tanda tangan tanpa memvalidasinya, Anda menyarankan kepada pengguna bahwa gambar tersebut asli jika dapat berupa salinan gambar.

Tetapi tidak semua tanda tangan digital yang valid akan memiliki representasi visual dalam PDF, bukan? PDF juga memungkinkan untuk menandatangani tanpa representasi visual sejauh yang saya tahu.

Bukankah pengguna perpustakaan harus memutuskan apakah kasus aplikasi / penggunaannya memungkinkan tampilan tanda tangan yang valid / tidak valid atau jika tindakan tambahan diperlukan seperti peringatan? Salah satu kasus penggunaan yang ada dalam pikiran saya adalah menandai wilayah di PDF sambil mempertimbangkan juga wilayah tanda tangan. Itu masih bisa menjadi karakter informatif meskipun alat lain diperlukan untuk validasi akhir. Saya tidak melihat kerugian menawarkan tampilan sebagai fitur opsional.

Tetapi tidak semua tanda tangan digital yang valid akan memiliki representasi visual dalam PDF, bukan? PDF juga memungkinkan untuk menandatangani tanpa representasi visual sejauh yang saya tahu.

Kedua pernyataan itu benar 1) tidak semua PDF berisi representasi visual (kebanyakan memang demikian). 2) PDF memungkinkan tanda tangan lebar dokumen. Namun, dalam bug ini, yang saya lihat adalah minat untuk menunjukkan tanda tangan visual yang terkait dengan tanda tangan digital dan bukan tanda tangan lebar dokumen.

Mungkin ada bug lain untuk mengajukan dukungan tanda tangan luas dokumen yang tidak memiliki representasi visual tetapi saya tidak ingat satu pun permintaan untuk ini di salah satu bug terkait PDFjs yang ada pada tanda tangan digital.

Bukankah pengguna perpustakaan harus memutuskan apakah kasus aplikasi / penggunaannya memungkinkan tampilan tanda tangan yang valid / tidak valid atau jika tindakan tambahan diperlukan seperti peringatan?
Saya pribadi percaya bahwa pengembang aplikasi harus dapat memilih untuk melakukan apa pun yang mereka inginkan dengan aplikasi mereka.

Namun, ada juga pertanyaan tentang apa yang harus dilakukan oleh perpustakaan seperti PDF.js. Menurut pendapat saya, mengekspos opsi yang tidak aman, mudah disalahpahami, dan akan menghasilkan hasil keamanan yang buruk bagi pengguna akhir akhir perpustakaan bukanlah sesuatu yang harus dibuat mudah oleh produsen perpustakaan.

Bayangkan jika fitur ini lengkap akan sangat membantu selama karantina oleh COVID-19 ini, bayangkan berapa banyak transaksi, kontrak, dll.

Mereka bisa saja dilakukan dari rumah, namun saya telah menyaksikan bahwa fungsi ini telah stagnan selama bertahun-tahun, saya tidak tahu alasannya tetapi saya menganggap bahwa dalam kombinasi dengan alat lain itu bisa sangat membantu untuk pekerjaan kolaboratif, kantor rumah, dll.

Saya sangat setuju. Tanda tangan digital akan menjadi semakin bernilai di tahun-tahun mendatang. Kasus penggunaan saya adalah alat yang digunakan dalam pengembangan perangkat medis. Tanpa tanda tangan digital, pekerjaan sehari-hari kita dari kantor rumah akan jauh lebih sulit. Itulah alasan mengapa saya menyerahkannya pada proyek menggunakan perpustakaan untuk menemukan trade-off antara risiko dan nilai pelanggan atau untuk mengambil tindakan tambahan yang sesuai untuk kasus penggunaan khusus mereka.

Saya juga sangat setuju bahwa tanda tangan digital memang merupakan fitur besar yang hilang.

Namun, ada juga pertanyaan tentang apa yang harus dilakukan oleh perpustakaan seperti PDF.js. Menurut pendapat saya, mengekspos opsi yang tidak aman, mudah disalahpahami, dan akan menghasilkan hasil keamanan yang buruk bagi pengguna akhir akhir perpustakaan bukanlah sesuatu yang harus dibuat mudah oleh produsen perpustakaan.

Perpustakaan diimplementasikan oleh pengembang, yang harus menyadari keamanan.
Di pihak saya, jika saya memiliki fitur tersebut, saya tentu saja akan menampilkan tanda tangan tetapi juga memeriksa & memvalidasi sisi server tanda tangan sehingga saya dapat menampilkan peringatan jika tanda tangan tidak valid.

@tokopedia
Apakah Anda berencana untuk membuka sumber untuk komunitas? Karena saya tidak memiliki satu kasus pun di mana saya dapat 1 / Izinkan dokumen tersedia di internet 2 / Izinkan pihak ketiga mengakses dokumen 3 / Izinkan pihak ketiga untuk menyuntikkan javascript di browser pengguna.
Itu akan menjadi tambahan yang bagus untuk pdfjs.

@tokopedia
Apakah Anda berencana untuk membuka sumber untuk komunitas? Karena saya tidak memiliki satu kasus pun di mana saya dapat 1 / Izinkan dokumen tersedia di internet 2 / Izinkan pihak ketiga mengakses dokumen 3 / Izinkan pihak ketiga untuk menyuntikkan javascript di browser pengguna.
Itu akan menjadi tambahan yang bagus untuk pdfjs.

Kami membuka sumber setiap perpustakaan yang kami gunakan untuk membuat penampil kami, dan ada banyak di antaranya dan banyak yang cukup rumit; Misalnya lihat bagian PKIjs yang menangani validasi sertifikat untuk penonton. Kami juga menawarkan lisensi komersial dengan dukungan.

Kami tidak akan membuat pemirsa menjadi sumber terbuka, membuat pekerjaan ini membutuhkan banyak waktu dan investasi dan waktu itu memiliki nilai. Kami dengan senang hati mendukung orang lain dalam menggunakan perpustakaan sumber terbuka yang kami buat untuk memungkinkan hal ini.

Re: 1; penampil tidak memerlukan dokumen untuk berada di internet.

Perihal: 2; penampil tidak perlu mengizinkan pihak ketiga mengakses dokumen.

Re: 3; komponen web dapat dihosting sehingga Anda dapat meninjau dan mengontrol pembaruan komponen.

Saya juga sangat setuju bahwa tanda tangan digital memang merupakan fitur besar yang hilang.

Namun, ada juga pertanyaan tentang apa yang harus dilakukan oleh perpustakaan seperti PDF.js. Menurut pendapat saya, mengekspos opsi yang tidak aman, mudah disalahpahami, dan akan menghasilkan hasil keamanan yang buruk bagi pengguna akhir akhir perpustakaan bukanlah sesuatu yang harus dibuat mudah oleh produsen perpustakaan.

Pustaka diimplementasikan oleh pengembang, yang _harus_ menyadari keamanannya.
Di pihak saya, jika saya memiliki fitur tersebut, saya tentu saja akan menampilkan tanda tangan tetapi juga memeriksa & memvalidasi sisi server tanda tangan sehingga saya dapat menampilkan peringatan jika tanda tangan tidak valid.

"Seharusnya" dan "adalah" adalah dua hal yang berbeda. Menampilkan gambar tanda tangan saat tanda tangan tidak valid atau tidak tepercaya adalah contoh yang bagus tentang jenis keputusan yang mungkin dibuat seseorang tanpa sepenuhnya memahami konsekuensinya.

Bayangkan jika fitur ini lengkap akan sangat membantu selama karantina oleh COVID-19 ini, bayangkan berapa banyak transaksi, kontrak, dll.

Mereka bisa saja dilakukan dari rumah, namun saya telah menyaksikan bahwa fungsi ini telah stagnan selama bertahun-tahun, saya tidak tahu alasannya tetapi saya menganggap bahwa dalam kombinasi dengan alat lain itu bisa sangat membantu untuk pekerjaan kolaboratif, kantor rumah, dll.

Saya sangat setuju inilah mengapa kami membuat dan membuka semua perpustakaan yang memungkinkan penampil kami menjadi sumber terbuka. Itu juga mengapa kami membiarkan orang menggunakan penampil kami secara gratis.

Berkat pekerjaan yang telah kami lakukan, seseorang pasti dapat membuat kembali karya penampil yang kami lakukan dengan upaya yang jauh lebih sedikit dan mengirimkan PR terkait ke PDFjs, kami bahkan akan senang untuk meninjau kode PR tersebut.

Saya perlu menampilkan pdf di aplikasi CLI Angular saya, dalam konteks di mana validitas tanda tangan tidak relevan, dan satu-satunya bagian penting adalah memiliki tampilan yang akurat.
Kasus uji saya adalah sampel pdf dengan tanda tangan digital dari Adobe.
Karena saya sudah mencoba banyak jawaban, saya akan menyingkat hasil penelitian saya di bawah ini.

Jawaban paling umum yang pernah saya lihat adalah mengomentari baris berikut di pdf.worker.js (baris 48353 hingga 48355):

if (data.fieldType === 'Sig') {
      //this.setFlags(AnnotationFlag.HIDDEN);
 }

Ini, bagaimanapun, tidak berhasil.

Mengomentari baris berikut di annotation.js secara langsung di pdfjs-dist juga tidak berfungsi (baris 285 hingga 287):

case 0:
        this.color = null;
        break;

Ini juga tidak berhasil, meskipun saya tidak tahu bagaimana menempatkan baris kode yang diberikan:
(<any>window).pdfWorkerSrc = '<path_to_file>/pdf.worker.js';

Saya telah mencoba setidaknya mendapatkan anotasi di halaman , tetapi setiap halaman mengembalikan array kosong:

page.getAnnotations().then(function(annotations) {
     console.log('annotations loaded');
     console.log(annotations);
     for (let i = 0; i < annotations.length; i++) {
          console.log(annotations[i].subtype);
      }
 }, function (reason) {
     console.log(reason);
}); 

Penting bagi aplikasi saya untuk menampilkan pdf apa adanya. Paling tidak, saya ingin mendapatkan pembatas persegi panjang dari tanda tangan untuk menampilkan placeholder sebagai gantinya.
Adakah yang bisa membantu saya?

Saya perlu menampilkan pdf di aplikasi CLI Angular saya, dalam konteks di mana validitas tanda tangan tidak relevan, dan satu-satunya bagian penting adalah memiliki tampilan yang akurat.
Kasus uji saya adalah sampel pdf dengan tanda tangan digital dari Adobe.
Karena saya sudah mencoba banyak jawaban, saya akan menyingkat hasil penelitian saya di bawah ini.

Hai, saya rasa Anda hampir menyelesaikannya dengan percobaan pertama ... apakah Anda sudah mencoba https://github.com/mozilla/pdf.js/issues/1076#issuecomment -446959325 ini?

Saya baru saja mencobanya: tidak ada yang berubah.
Ada ide lain?

Masalah ini telah dibuka untuk beberapa waktu sekarang, apa rencana saat ini untuk mengatasinya, dan apa yang bisa kami bantu?

Jika saya tidak dapat menampilkan tanda tangan, paling tidak, saya ingin menampilkan persegi panjang placeholder di tempat yang seharusnya.
(Cukup mengetahui koordinat x, y serta lebar dan panjang tanda tangan)

Tentu saja, menampilkan tanda tangan akan tetap menjadi skenario terbaik (sekali lagi, saya tidak perlu memverifikasinya dalam kasus penggunaan khusus saya).

Apakah ini merupakan opsi untuk menambahkan opsi render untuk menampilkan tanda tangan yang belum diverifikasi?
Dengan cara ini, pengguna pdf.js dapat memutuskan apakah mereka ingin mengambil risiko untuk menampilkannya atau tidak.

Menampilkan tanda tangan kriptografik yang tidak valid sama buruknya dengan menampilkan tanda tangan yang salah divalidasi:
https://www.pdf-insecurity.org/

Bagaimana jika tanda tangan telah divalidasi dengan benar sebelumnya oleh katakanlah layanan backend?
Ini berarti bahwa tanda tangan OK tetapi masih tidak dapat ditampilkan di aplikasi klien.

Opsi render untuk menampilkan tanda tangan atau tidak akan memungkinkan pengguna pdf.js untuk memvalidasi tanda tangan entah bagaimana dan kemudian memutuskan sendiri untuk menampilkannya atau tidak.
Ini juga akan menghilangkan beban dari pengembang pengembang pdf.js untuk memberikan verifikasi tanda tangan sama sekali karena ini mungkin tidak menjadi bagian dari pdf sebuah perpustakaan rendering.
Sama sekali tidak menampilkan tanda tangan sama sekali membatasi kasus penggunaan pdf.js.

Bagaimana jika tanda tangan telah divalidasi dengan benar sebelumnya oleh katakanlah layanan backend?
Ini berarti bahwa tanda tangan OK tetapi masih tidak dapat ditampilkan di aplikasi klien.

Opsi render untuk menampilkan tanda tangan atau tidak akan memungkinkan pengguna pdf.js untuk memvalidasi tanda tangan entah bagaimana dan kemudian memutuskan sendiri untuk menampilkannya atau tidak.
Ini juga akan menghilangkan beban dari pengembang pengembang pdf.js untuk memberikan verifikasi tanda tangan sama sekali karena ini mungkin tidak menjadi bagian dari pdf sebuah perpustakaan rendering.
Sama sekali tidak menampilkan tanda tangan sama sekali membatasi kasus penggunaan pdf.js.

Melakukan validasi antara server dan klien tidak masalah. Mengekspos sebuah bendera untuk menampilkan tanda tangan sebagai valid dan tervalidasi akan menjadi senjata kaki.

Melakukan validasi antara server dan klien tidak masalah. Mengekspos sebuah bendera untuk menampilkan tanda tangan sebagai valid dan tervalidasi akan menjadi senjata kaki.

Kami berurusan dengan tanda tangan terverifikasi tetapi tidak dapat menampilkannya (tanpa meretas) di browser klien menggunakan pdf.js
Jadi, opsi apa lagi untuk merender PDF di browser klien yang akan Anda sarankan untuk membuat representasi visual dari tanda tangan terverifikasi?

Anda dapat menambal PDFj Anda sebelum penerapan untuk memiliki perilaku apa pun yang Anda butuhkan?

Itulah yang saya maksud dengan "peretasan" dan itulah yang terpaksa kami lakukan saat ini :-(

Saya tidak mengerti mengapa kami masih mengajukan pertanyaan tentang masalah itu sendiri: "peretasan" bahkan tidak berhasil untuk saya, dan saya masih membutuhkannya.

Dalam kasus penggunaan saya, validitas tanda tangan tidak dipertanyakan. Namun, saya perlu menampilkannya, atau setidaknya memberi tahu pengguna bahwa ada "sesuatu di sana", bukan hanya bagian kanvas yang kosong itu.
Saya tidak peduli jika API dilengkapi dengan paragraf peringatan merah besar tentang tanda tangan yang belum diverifikasi, atau jika itu memaksa saya secara hukum untuk mengatakan itu tidak dapat diverifikasi, atau jika itu memperingatkan saya bahwa itu adalah risiko saya sendiri.
... Saya hanya perlu menunjukkan tanda tangannya.

Paling tidak, saya benar-benar ingin memiliki posisi dan ukuran tanda tangan di dokumen, sehingga saya dapat menampilkan kotak abu-abu di tempatnya dengan tulisan "hei, pengguna, seharusnya ada tanda tangan di sana" pada mereka.

Saat ini, pengguna tidak memiliki kemampuan untuk mengetahui bahwa dokumen ditandatangani di tempat ini.
Bukankah itu cara temper yang lebih buruk?

Jika ada boolean yang memungkinkan untuk menampilkan semua tanda tangan digital dari dokumen sebagai kotak template abu-abu transparan, itu akan cukup memuaskan, dan fitur itu tidak akan menimbulkan masalah etika / keamanan.

(Saya juga ingin mengatakan bahwa masalahnya tampaknya telah tertunda sejak 2012 dengan lebih dari seratus komentar, di utas ini saja. Saya rasa saya bukan satu-satunya yang menunggu fitur ini)

Kotak abu-abu lebih terlihat seperti kesalahan rendering dan sangat mungkin membebani hotline dukungan yang disediakan :-)
Kami memiliki peretasan yang berfungsi, yang berfungsi dengan baik untuk saat ini tetapi diakui sangat buruk:

  1. Unduh pdfjs-dist versi terbaru, transparan, dan mini
  2. Tambal baris yang dimaksud dalam versi transparan.
  3. Rilis sebagai paket pribadi baru ke internal npm-repo.
  4. Gunakan paket yang ditambal alih-alih paket pdfjs-dist asli.

Jelek kan? Tapi itu berfungsi dan membuat tanda tangan yang disematkan dengan baik.

Kotak abu-abu lebih terlihat seperti kesalahan rendering dan sangat mungkin membebani hotline dukungan yang disediakan :-)

Ya, ya, ya, maksud saya template / gambar / pesan apa pun yang dapat dilengkapi dengan * pdf berisi tanda tangan digital yang tidak dapat diverifikasi, dan oleh karena itu, tidak ditampilkan. Apa pun yang bisa dipahami oleh pengguna jika ada pesan yang menjelaskannya.

  1. Tambal baris yang dimaksud dalam versi transparan.

Saya saat ini menggunakan Angular CLI dengan pdfjs-dist diinstal di node_modules saya, tetapi solusi apa pun yang saya tulis beberapa posting yang lalu tidak berfungsi di pihak saya, dan juga tidak melakukan ini:

Hai, saya rasa Anda hampir menyelesaikannya dengan percobaan pertama ... apakah Anda sudah mencoba # 1076 (komentar) ini ?

Apakah saya melewatkan sesuatu, atau apakah kasus saya terlalu spesifik untuk diperbaiki?

Kami mengikuti penjelasan di utas ini.
https://github.com/mozilla/pdf.js/issues/4743#issuecomment -163953288

Kami pada dasarnya mengubah bagian ini:

// Hide unsupported Widget signatures.
if (data.fieldType === 'Sig') {
   warn('unimplemented annotation type: Widget signature');
   this.setFlags(AnnotationFlag.HIDDEN);
}

Untuk ini:

// Hide unsupported Widget signatures.
if (data.fieldType === 'Sig') {
   warn('unimplemented annotation type: Widget signature');
}

Saya tahu Anda dapat menghapus keseluruhan 'jika' tetapi kami menginginkan patch sekecil mungkin.

Astaga. Itu memang perbaikan yang tidak berhasil di pihak saya.
Saya akan mencoba lagi ketika saya kembali ke bagian tampilan pdf dari aplikasi saya.
Saya belum membuat paket sendiri, tetapi mengubah file langsung di node_modules / pdfjs-dist tidak mengubah apa pun terakhir kali saya mencoba.

Apakah Anda mengubah kedua file pdf.worker.js dan pdf.worker.min.js
Ini perlu dalam pendekatan kami.

Apakah Anda mengubah kedua file pdf.worker.js dan pdf.worker.min.js
Ini perlu dalam pendekatan kami.

Anda mengangkat poin yang sangat bagus yang mungkin telah saya abaikan!
Saya akan mencobanya dengan cepat hari ini, dan melihat apakah berhasil.

Hai, saya suka pendekatan Anda, tetapi sayangnya itu tidak berhasil untuk saya
Saya mengubah garis seperti ini:

Kami mengikuti penjelasan di utas ini.
# 4743 (komentar)

Kami pada dasarnya mengubah bagian ini:

// Hide unsupported Widget signatures.
if (data.fieldType === 'Sig') {
   warn('unimplemented annotation type: Widget signature');
   this.setFlags(AnnotationFlag.HIDDEN);
}

Untuk ini:

// Hide unsupported Widget signatures.
if (data.fieldType === 'Sig') {
   warn('unimplemented annotation type: Widget signature');
}

Saya tahu Anda dapat menghapus keseluruhan 'jika' tetapi kami menginginkan patch sekecil mungkin.

Kemudian saya membuatnya dengan gulp generic dan menggunakan sumber daya yang dibangun.

Apakah Anda mengubah kedua file pdf.worker.js dan pdf.worker.min.js
Ini perlu dalam pendekatan kami.

pdf.worker.js dibuat tetapi Anda menyebutkan pdf.worker.min.js , bagaimana itu dibuat dan di mana disimpan?
Apa yang saya lewatkan?

Terima kasih banyak sebelumnya

@ ll-priva Kami tidak membuat pdf.js sendiri.
Seperti yang saya katakan di Komentar https://github.com/mozilla/pdf.js/issues/1076#issuecomment -658601553 kami benar-benar mengunduh versi pdfjs-dist dan menambal versi yang dibundel dari pdf.worker.js dan pdf.worker.min.js .

Penjelasan saya di https://github.com/mozilla/pdf.js/issues/1076#issuecomment -658609803 mungkin agak tidak jelas, maaf.
Kami menerapkan solusi yang dijelaskan dengan menambal paket prebuilt https://www.npmjs.com/package/pdfjs-dist.
Kemudian kami menggunakan versi patch pdf.worker.js dan pdf.worker.min.js untuk mendorong paket pribadi pdfjs-dist ke npm-repositori internal kami.
Terakhir, kami menggunakan versi yang ditambal ini dalam kode produksi kami alih-alih paket resmi pdfjs-dist .

Saya harap ini membuat pendekatan kami sedikit lebih jelas.

@PSpSynedra Terima kasih banyak. Itu juga berhasil untuk saya

Saya kembali melakukan tugas ini untuk pertama kalinya dalam beberapa minggu, tetapi tetap tidak berhasil di pihak saya.
Saya belum membuat paket pribadi saya sendiri untuk saat ini: selama saya tidak membangun kembali, memodifikasi secara langsung file di node_modulespdfjs-dist seharusnya sudah berfungsi (secara lokal, maka saya memang harus mengimpor pdf.js yang dimodifikasi sebagai aset atau paket).

Mencari "Sig" di folder memberikan 4 hasil file yang berbeda:

  • pdfjs-dist \ buildpdf.worker.js
  • pdfjs-dist \ buildpdf.worker.min.js
  • pdfjs-dist \ es5 \ buildpdf.worker.js
  • pdfjs-dist \ lib \ core \ annotation.js

Saya mengedit semua 4 kejadian tersebut untuk menghapus konten "jika" yang membersihkan bidang tanda tangan dan menetapkan bendera untuk menyembunyikannya, seperti yang disebutkan di atas.
Tidak ada yang berbeda terjadi: getAnnotations () mengembalikan larik kosong, dan tanda tangan yang ada masih tidak ditampilkan.

Saya juga masih mendapatkan pesan ini di konsol, yang bahkan bukan merupakan kesalahan atau peringatan (pdf.worker.js: 2965: 14):

Peringatan: Jenis bidang widget yang tidak diterapkan "Sig", kembali ke jenis bidang dasar.

Dengan melihat kodenya, itu berarti annotation.js membungkusnya dalam WidgetAnnotation "base", yang berarti pesan tersebut tampaknya tidak menjadi masalah, hanya flag yang saya hapus.

Apakah saya melewatkan sesuatu? Saya mengedit file min.js serta file js, yang ada di folder build dan karena itu harus yang digunakan, jadi semuanya seharusnya berfungsi ...
Apa sebenarnya yang Anda lakukan @ ll-priva dan @PSpSynedra ?

@Epsiom, inilah yang baru saja saya lakukan, dan berhasil untuk saya dalam waktu sekitar 5 menit: https://github.com/mozilla/pdf.js/issues/1076#issuecomment -446959325

Anda harus mengomentari this.setFlags(AnnotationFlag.HIDDEN); sekaligus menambahkan data.fieldValue=null . Satu-satunya file yang saya modifikasi adalah pdf.worker.js , yang dalam kasus kami berasal dari perpustakaan pdfjs-dist jadi sudah diminimalkan

@Epsiom dan lainnya yang mungkin berakhir di sini.
Saya memiliki masalah yang sama, mengedit file pekerja pdf tidak ada hasil.

Dalam kasus saya, saya menggunakan https://github.com/VadimDez/ng2-pdf-viewer untuk menampilkan pdf dalam aplikasi sudut. Modul ini langsung memuat pekerja pdf dari cloudflare, bukan file lokal. Jadi periksa apakah aplikasi web benar-benar menggunakan file pdf.worker.js yang dimodifikasi. Anda dapat memeriksa dengan mengklik di kolom Unimplemented widget ketik peringatan "Sig" di konsol dan gerakkan mouse ke nama file.

@konum Peringatannya berasal dari " http: // localhost : 4200 / assets / vendor / pdf.worker.js", tapi saya sudah mengomentari dua baris file ini seperti yang diceritakan sebelumnya:
if (data.fieldType === 'Sig') { //this.setFlags(AnnotationFlag.HIDDEN); //data.fieldValue = null; }

Masih belum ada tanda tangan digital yang terlihat ...

@Epsiom juga tidak berhasil untuk saya. Masih memeriksanya.

@Epsiom Berhasil mendapatkan tanda tangan untuk dilihat. Di pdf.worker.js tambahkan ini di baris 18480
case "Sig":
mengembalikan SquareAnnotation baru (parameter);

Apakah sakelar tepat di atas garis ini.
(0, _util.warn) ('Unimplemented widget field type "' + fieldType + '",' + "fall back to base field type.");

@konum Tidak bekerja untuk saya:
ERROR Error: Uncaught (in promise): Object: {"message":"SquareAnnotation is not defined","stack":"AnnotationFactory_create<strong i="7">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:47999:7\nget annotations<strong i="8">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:48877:43\nLocalPdfManager_ensure/<<strong i="9">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:49204:21\nLocalPdfManager_ensure<strong i="10">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:49202:14\nPage_getOperatorList<strong i="11">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:48815:43\nwphSetupRenderPage/<<strong i="12">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:49883:13\n"} AnnotationFactory_create<strong i="13">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:47999:7 get annotations<strong i="14">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:48877:43 LocalPdfManager_ensure/<<strong i="15">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:49204:21 LocalPdfManager_ensure<strong i="16">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:49202:14 Page_getOperatorList<strong i="17">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:48815:43 wphSetupRenderPage/<<strong i="18">@http</strong>://localhost:4200/assets/vendor/pdf.worker.js:49883:13

@Epsiom Apakah Anda menggunakan pdf.js versi terbaru? di pdf.worker.js harus ada kelas SquareAnnotation yang ditentukan.

@Epsiom hanya untuk memperjelas, hanya this.setFlags(AnnotationFlag.HIDDEN); harus dikomentari. data.fieldValue = null; harus ditambahkan jika tidak ada, tetapi TIDAK boleh dikomentari.

Kami juga menggunakan paket pdfjs-dist, jadi kami memodifikasi paket itu secara langsung, sesuai komentar sebelumnya. Apakah Anda yakin bahwa kode yang Anda ubah benar-benar dijalankan? Jika berada di node_modules, bergantung pada build Anda, beberapa aset tersebut mungkin di-cache, dan Anda mungkin tidak benar-benar menggunakan kode yang dimodifikasi.

@kjhangiani Saya ingat dengan jelas ada console.log tambahan yang muncul di konsol, jadi itu dieksekusi dengan jelas.
Saya akan mencoba menambahkan data.fieldValue = null; ketika saya kembali ke tugas ini, dan melihat apakah berhasil.

Menambahkan data.fieldValue = null; kembali ke blok if (data.fieldType === 'Sig') , serta console.log("TEST") berjaga-jaga, dan tidak ada yang terjadi, sementara "TEST" muncul dengan benar di konsol, setelah Warning: Unimplemented widget field type "Sig", falling back to base field type. biasa

Ada ide lain?

@Epsiom Berhasil mendapatkan tanda tangan untuk dilihat. Di pdf.worker.js tambahkan ini di baris 18480
case "Sig":
mengembalikan SquareAnnotation baru (parameter);

Apakah sakelar tepat di atas garis ini.
(0, _util.warn) ('Unimplemented widget field type "' + fieldType + '",' + "fall back to base field type.");

Itu berhasil untuk saya, Anda menyelamatkan hari saya, terima kasih.

@yduybya Seberapa baru proyek Anda?
Apakah ada kekhususan tentang itu?
Saya rasa saya perlu memperbarui versi pdf.js saya dan mencobanya lagi, meskipun itu cukup baru.

Apakah ada cara mudah untuk memperbarui pdf.js di aplikasi Angular 9?
Saya menemukan pdf.worker.js baru di sini (http://mozilla.github.io/pdf.js/build/pdf.worker.js), tetapi hanya mengganti file itu tidak berfungsi (jelas).

Saya menelusuri proyek saya kembali ke https://github.com/mozilla/pdf.js/issues/8836 dan https://github.com/ashishyadav0019/pdfJS_angular4_Ts.git , tetapi proyek ini menggunakan file yang sudah ketinggalan zaman.

File di pdf.js github dan pdfJS_angular4_Ts.git tidak berkorelasi.
Adakah yang tahu cara mengimpor pdf.js dengan benar pada proyek Angular 9, dengan file terbaru?

@Epsiom For Angular 8 app) Saya pikir itu harus bekerja pada angular 9) Saya menggunakan https://github.com/VadimDez/ng2-pdf-viewer.

Dari dokumen ng2-pdf-viewer:
Secara default pekerja diambil dari cdnjs.cloudflare.com.
Di jalur pembaruan kode Anda ke pekerja menjadi contoh /pdf.worker.js
(jendela sebagai apapun) .pdfWorkerSrc = '/pdf.worker.js';
Ini harus diatur sebelum komponen penampil pdf dirender.

Menggunakan proyek ini akan menambahkan ketergantungan pdfjs-dist ke proyek Anda. Edit node_modules / pdfjs-dist / build / pdf.worker.js dengan tip squareAnnotation.

@konum Saya menggunakan pdf.js secara langsung dan bukan ng2-pdf-viewer karena berbagai alasan, dengan terinspirasi oleh ini: https://github.com/ashishyadav0019/pdfJS_angular4_Ts.git
Saya memiliki ketergantungan pdfjs-dist, tetapi src/assets/vendor/pdf.worker.js yang digunakan.
Ada ide ?

@Epsiom Sudahkah Anda mencoba memperbarui file pdf.js dan pdf.worker.js ke kode terbaru?

@konum Itulah yang saya coba lakukan, tetapi karena pdf.js jarang digunakan di Angular, karena sebagian besar proyek tampaknya hanya perlu ng2-pdf-viewer, dan karena file yang digunakan dalam versi terbaru pdf.js berbeda , proses melakukannya pada pandangan pertama masih jauh dari jelas.

Halo,

Mengomentari this.setFlags (AnnotationFlag.HIDDEN); di pdf.worker.js di v2.6.347 tidak menunjukkan gambar tanda tangan.

Apakah ada perubahan itu?

@lainosantos Ya, ada perubahan. Jika Anda menonaktifkan pembuatan formulir, tanda tangan akan ditampilkan lagi.

@hanrauh Terima kasih.

PDFViewerApplicationOptions.set('renderInteractiveForms', false);

Apakah ada cara untuk mengaktifkan formulir dan memperlihatkan tanda tangan?

@lainosantos Tidak, tapi saya telah menemukan panduan bagus tentang cara membuat formulir Anda sendiri. Contoh ini mengasumsikan bahwa renderInteractiveForms adalah mati. Ini menggunakan Angular, tetapi saya kira Anda dapat mengekstrak idenya bahkan jika Anda menggunakan kerangka kerja yang berbeda: https://medium.com/factory-mind/angular-pdf-forms-fa72b15c3fbd

Saya memiliki masalah yang lebih mendesak untuk saat ini dan tidak dapat menghabiskan waktu untuk tugas tersebut, tetapi jika ada yang berhasil mengimpor versi pdf.js terbaru di Angular 9, dia akan mengucapkan terima kasih yang sebesar-besarnya.

@Epsiom Ini dia: https://www.npmjs.com/package/ngx-extended-pdf-viewer :)

@stephanrauh ... Yah, kecuali bahwa saya harus kompatibel dengan IE11 dan hanya menggunakan kanvas secara langsung untuk memiliki penampil pdf yang dibuat khusus, jadi sayangnya saya tidak dapat menggunakannya.
Saya juga tidak bisa menggunakan ng2-pdf-viewer, atau semacamnya, saya benar-benar bertanya tentang pdf.js itu sendiri, yang merupakan kasus khusus.

Apakah halaman ini membantu?
5 / 5 - 1 peringkat

Masalah terkait

azetutu picture azetutu  ·  4Komentar

BrennanDuffey picture BrennanDuffey  ·  3Komentar

anggikolo11 picture anggikolo11  ·  3Komentar

AlexP3 picture AlexP3  ·  3Komentar

jigskpatel picture jigskpatel  ·  3Komentar