Pdf.js: التوقيعات الرقمية بتنسيق pdf.js

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

مرحبا! نحن مهتمون بوقت أو ما إذا كنت ستنفذ عرض بيانات التوقيع (Xades و Pades & Cades) في عارض PDF (PDF.js)

أطيب التحيات

أليخاندرو بينيدو ،
SOA-X

2-feature 4-annotations

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

لجميع الأشخاص أعلاه ، يرجى استخدام زر تفاعل +1 الجديد في GitHub بدلاً من إضافة التعليقات هنا.

ال 174 كومينتر

لا توجد خطط وشيكة حاليًا لتنفيذ هذه الميزة. لم نر ذلك يحدث كثيرًا لذا لم يكن أولوية. نحن نبحث دائمًا عن المزيد من المساهمين ، لذلك نرحب بأي تصحيحات لإضافة هذه الميزة. إذا كنت مهتمًا بإضافته ، فلا تتردد في التوقف عن طريق قناة IRC (#pdfjs irc.mozilla.org) إذا كانت لديك أسئلة.

بريندان

مرحبا

ما هو الوضع الحالي لتطبيق هذه الميزة؟

شكر

@ fermo111 لم يتم التنفيذ بعد ، ولكن سأكون سعيدًا بتدريب شخص ما على استعداد للقيام بهذه المهمة.

yurydelendik أنا مهتم بتنفيذ ميزة تقديم التوقيعات الرقمية لملفات PDF في pdf.js. كيف يمكنني الاتصال بك؟

wolvz تجدني في قناة IRC irc.mozilla.org #pdfjs (هذا أبسط) أو انضم إلى أي من اجتماعاتنا العامة لتنسيق الأمور.

أحاول تطبيق SigWidgetAnnotation (مثل TextAnnotation و LinkAnnotation) ، في annotation.js ، لدعم التوقيعات الرقمية في pdf.js.
يظهر التوقيع في عارض pdf ، ويمكنني بالفعل استخراج الشهادات المضمنة في كائن PKCS7 بترميز DER والتحقق منها ...
أنتقل الآن إلى الخطوة التالية ، وهي التحقق من ملخص رسالة الملف.
لذلك أحتاج إلى الوصول إلى محتويات الملف ... لا أعرف ما إذا كان من الممكن أو لا يمكنني الوصول إلى ذلك من anotation.js ، لكن لا يمكنني معرفة ذلك. أفضل ما يمكنني فعله هو الحصول على المحتويات في core.js باستخدام:

var contentStreamPromise = this.pdfManager.ensure (this، 'getContentStream'، [])؛
var dataPromises = Promise.all ([contentStreamPromise]) ؛
dataPromises.then (الوظيفة (البيانات) {
var contentStream = البيانات [0] ،
محتويات var = contentStream.str.bytes ؛
عودة المحتويات
}) ؛

هل يمكن لأي شخص أن يوضح لي ما هي أفضل طريقة للحصول على محتويات الملف في annotation.js؟
شكرا لك مقدما...

وولفز
أي تقدم في هذا الصدد؟

تضمين التغريدة
أنا مهتم للغاية بميزة عرض التوقيع الرقمي. لقد قمت باستنساخ مستودع wolvz وقمت ببناء الكود ولكن عندما أحاول استخدامه ، أحصل على وعد برفض مع هذا الخطأ: "مطلوب غير محدد". هل يمكن لأي شخص أن يشرح سبب هذا الخطأ وكيف يمكنني إصلاحه؟ أيضًا ، أنا على استعداد تام لمواصلة العمل على هذه الميزة. لقد عملت مع ملفات pdf في Java عبر مكتبة iText ولكن العمل معهم في جافا سكريبت شيء لم أجربه من قبل. هل يمكن لشخص ما أن يوجهني إلى بعض الوثائق / البرامج التعليمية التي يمكن أن تجعلني أشير إلى الاتجاه الصحيح حتى أتمكن من معرفة من أين أبدأ بينما أحاول نقل هذه الميزة إلى أسفل المجال؟

أنا حائر. ما يجب علي فعله في مكتبة pdf.js الخاصة بي لإظهار ملف pdf التوقيع الرقمي في pdfJS

untitled

يظهر هذا التوقيع والشهادة في ملف pdf .. ولكن عندما أقوم بفتحهما بتنسيق pdf.js لن يظهرهما هناك.

@ mrpandya007 ، لا يظهر التوقيع الرقمي لأن المطورين اختاروا إخفاءه حتى تعمل ميزة التحقق من التوقيع.
إذا كنت أتذكر ، إذا كنت تريدهم ببساطة أن يظهروا ، فعليك تعليق أسطر 389 إلى 392 هنا: https://github.com/mozilla/pdf.js/blob/master/src/core/annotation.js#L389
لست متأكدًا ، ولا يمكنني اختباره الآن.

wolvz ، Thanx للرد ولكن علق بالفعل. الرجاء إلقاء نظرة على هذا ، إن توقيع pdf الذي تم إنشاؤه لتقرير Crystal لا يظهر ولكن ملف pdf الذي تم إنشاؤه بواسطة DevExpress يعرضه بشكل صحيح

من فضلك أجبني .... ماذا علي أن أفعل .. يمكنني أن أعطيك ملف pdf هذا للاختبار

لا يوجد دعم جيد للتوقيعات الرقمية حتى الآن ، لذلك يجب تنفيذ ذلك.

كم يومًا سيستغرق إصلاح مشكلة التوقيع الرقمي هذه لأننا نعتمد على lib الخاص بك.

قد يستغرق الأمر وقتًا طويلاً حيث سيتعين على شخص ما تطوير هذه الميزة وهناك حاليًا مشكلات ذات أولوية أعلى.

heading

لماذا أواجه مثل هذه المشكلة من "=" تسجيل الدخول العناوين ، فقط في pdf.js ، بعد تنزيل الملف الذي اختفى.
أي حل من فضلك. يحدث ذلك فقط في ملف pdf الذي تم إنشاؤه من telerik.

@ mrpandya007 من فضلك لا تنشر القضايا غير ذات الصلة داخل القضايا الأخرى. افتح مشكلة منفصلة لهذه المشكلة.

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

هل هناك جدول زمني لموعد معالجة هذه المشكلة؟ أم يجب أن نفكر في منتج آخر؟
pdfjsissue

لا أحد يعمل على هذا حتى الآن على حد علمي ، لذلك إذا كان هناك شخص ما على استعداد للعمل على هذا ، فلا تتردد في تقديم العلاقات العامة.

مرحبا،
يجب أن يكون إصدار PDF.JS القادر على عرض حقول التوقيع الرقمي فقط كافيًا للعديد من المستخدمين ... هل هناك أي "مفترق" قادر على القيام بذلك؟
مع تحياتي

DORNINEM ، ما عليك سوى التعليق على جزء من الكود الذي يخفي التعليقات التوضيحية للتوقيع.
لكن على أي حال ، إليك الشوكة التي طلبتها: https://github.com/wolvz/pdf.js

تضمين التغريدة شكرا جزيلا.
أنا أتساءل لماذا هذه الميزة ليست في النسخة الرسمية ، لأنها تعمل بشكل جيد للغاية. لقد اختبرت بعض ملفات PDF الموقعة الخاصة بي (من 1 إلى 6 حقول توقيع مختلفة) وكانت النتيجة مثالية!
أنا متأكد حقًا من أن الحاجة الحقيقية هي عرض هذه الحقول ، وليس التحقق من صحة التوقيع. من الأفضل إجراء التحقق من صحة التوقيع من جانب الخادم لأنه يتطلب في بعض الأحيان شهادات غير مثبتة في مستودع شهادات محلي.

مرحبا،

يمكن لأي شخص أن يشرح السطر الذي يجب أن نعلق عليه أو نزيل التعليق للسماح لـ pdf.js بعرض التوقيع الرقمي؟

شكرا على كل المعلومات :)

maximlefebvre وفقًا لـ https://github.com/wolvz/pdf.js/commit/7df3f4fe6e21b888358fd7718cb15e3c266ba066 ، يجب أن يكون ذلك كافيًا للسماح لـ PDF.js بعرض التوقيع. لاحظ مع ذلك أنه لم يتم التحقق من ذلك بواسطة فريق PDF.js كحل مستقر (ومن ثم فهو ليس في قاعدة الكود الرسمية حتى الآن) ، ولكنه قد يعمل كحل مؤقت.

نحن مهتمون بتنفيذ التحقق من التوقيع. يبدو أن wolvz بدأ العمل على هذا ولكن لم يكمله - هل لديك أي كود جزئي يمكننا العمل عليه؟

wolvz ، هل يمكنك مساعدتنا من خلال كتابة ملاحظة صغيرة لفهم الريبو الخاص بك. أنا غير قادر على فهم كيفية البدء في التحقق من التعليمات البرمجية الخاصة بك. نحاول تنفيذ التوقيع وقد نتمكن من إكمال مشروعك ومساعدة المجتمع.

لقد قمنا بتنفيذ كل من التحقق من التوقيع والتوقيع لملفات PDF في المتصفح باستخدام https://pkijs.org/examples/PDFexample.html لم ندمج بعد مع PDFjs ولكن سوف تفعل ذلك في المستقبل غير البعيد. هدفنا هو إصدار معظم هذا كـ OSS وإعادة أي تغييرات ضرورية على PDFjs لجعل التكامل سلسًا.

رائع ، شكرًا rmhrisk! ومع ذلك ، لست متأكدًا من كيفية إنشاء ملف حزمة CA. هل لديك تفاصيل حول كيفية القيام بذلك؟ أتخيل أنه عندما يتم دمج هذا مع pdf.js سيكون الأمر أكثر "التوصيل والتشغيل" حيث يأتي مع Adobe Root CA افتراضيًا ويمكنه التحقق من سلسلة الشهادات ، أليس كذلك؟ وهل لديك جدول زمني متوقع لتكامل pdf.js؟ عملك موضع تقدير كبير!

يوجد واحد هنا: http://curl.haxx.se/ca/cacert.pem وآخر تم تسجيله في المستودع تحت العينات.

توجد أداة لإنشاء واحدة هنا: https://github.com/PeculiarVentures/tl-create

لا يمكنني مشاركة ETA في هذا الوقت ، فنحن محدودون بالموارد وهذا مهم بالنسبة لنا ولكننا بحاجة إلى إنهاء بعض الأجزاء الأكثر تعقيدًا أولاً.

لقد جربت الشهادة التي قمت بربطها ، بالإضافة إلى بعض الشهادات التي حاولت استخراجها من ملف PDF باستخدام Adobe Reader ، لكنني دائمًا ما أتلقى الخطأ "TypeError: Cannot read property 'signature_time_stamp' of undefined" (في Safari / Chrome Stable / Chrome الكناري).

صادف أن لدي بعض الوقت هذا الأسبوع القادم ، لذا أخبرني إذا كان بإمكاني المساعدة في الدمج في pdf.js بأي شكل من الأشكال.

لا يدعم هذا النموذج سوى التوقيعات الأساسية ، ولا يوجد ختم زمني أو LTV في هذا الوقت. لا تتردد في الاتصال بي على rmh في unmitigatedrisk dot com

آه لقد فهمت. كمرجع ، حصلت عليه أخيرًا للعمل في Chrome / Firefox (ولكن ليس Safari ، والذي يبدو أنه يدعم فقط WebCrypto المسبق ) باستخدام حزمة CA وملف PDF هذا .

نعم هذا أيضًا ، إنها ليست المشكلة المسبوقة فحسب ، بل إنها تدعم أيضًا ما يكفي من تشفير الويب للتعامل مع حالات netflix drm. على سبيل المثال ، لا يسمحون لك بتصدير المفتاح العام لزوج المفاتيح الذي تقوم بإنشائه !؟ هذا مصدر جيد للتحقق من دعم المتصفح - https://diafygi.github.io/webcrypto-examples/

viveksjain هل يمكنك تأكيد كيفية تشغيله في Chrome / Firefox

لقد حاولت استخدام البرنامج المساعد للتطوير في Firefox ولكن لا يزال يبدو أنه فشل في إظهار التوقيعات.
http://mozilla.github.io/pdf.js/extensions/firefox/pdf.js.xpi

complience ، حصل على نموذج الكود الموجود على https://pkijs.org/examples/PDFexample.html لا يعمل بتنسيق PDFjs

مرحبًا complience ، لدي إثبات للمفهوم يعمل على https://github.com/viveksjain/pdf.js/tree/sig-verify-support. يمكنك تجربته باستخدام git clone --recursive https://github.com/viveksjain/pdf.js.git . مع القليل من العمل ، يجب أن يكون جاهزًا لطلب سحب في هذا الريبو ، لكن لم يكن لدي الوقت حتى الآن.

تضمين التغريدة ما الذي لا يزال مطلوبًا قبل أن يصبح جاهزًا لطلب السحب؟

+1 مسرور للحصول على هذه الوظيفة.

نعم ، سيكون هذا إضافة كبيرة للمجتمع ، مما يفتح الباب للعديد من حالات الاستخدام. شكرا لك!!

+1 لهذه الوظيفة

+1 لهذه الوظيفة

لجميع الأشخاص أعلاه ، يرجى استخدام زر تفاعل +1 الجديد في GitHub بدلاً من إضافة التعليقات هنا.

+ 1 لهذه الوظيفة

👍 + 1 لهذه الوظيفة

مرة أخرى ، يرجى استخدام زر رد فعل GitHub في أعلى تعليق للتأييد لهذه الوظيفة ، مما سيساعدنا في تحديد أولويات المشكلة. تؤدي إضافة تعليقات "+1" إلى إخطارات غير ضرورية للمطورين.

"TypeError: لا يمكن قراءة الخاصية 'signature_time_stamp' غير المعرفة" باستخدام فرع viveksjain

+1. في انتظار هذه الميزة! ..

متى ستكون هذه الوظيفة متاحة؟ ماذا حدث لتقدم viveksjain؟

complience مرحبًا ، لديّ إثبات للمفهوم يعمل على https://github.com/viveksjain/pdf.js/tree/sig-verify-support. يمكنك تجربته باستخدام git clone --recursive https://github.com/viveksjain/pdf.js.git. مع القليل من العمل ، يجب أن يكون جاهزًا لطلب سحب في esta repo ، لكنني لم أحصل على الوقت بعد.

lexcorp للأسف ، أصبح هذا أولوية أقل بالنسبة لي بعد رسالتي السابقة. سأرى ما إذا كان بإمكاني الالتفاف على ذلك ، لكنني لن أقدم أي وعود لا يمكنني الوفاء بها ...

أحاول تجميع هذا الإصدار: https://github.com/viveksjain/pdf.js/tree/sig-verify-support
عندما أدخل الأمر: تجعل العقدة عامة
وصلتني الرسالة:
ولا يتم تنفيذ عملية التجميع

كيف يمكنني حل هذا الخطأ؟
انا افعل شيئا خاطئا؟
لماذا لا تنهي التجميع؟

lexcorp إذا كان لا يزال هناك أي اهتمام ، فإن الإصدار الخاص بي على الأقل محدث بما يكفي

مرحبًا فيفيك ، نعم ما زلت مهتمًا ، شكرًا لك ...

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

lexcorp https://github.com/lexcorp إذا كان لا يزال هناك أي اهتمام ، في
الأقل يتم تحديث روايتي بما يكفي لتجميعها. 👍

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/mozilla/pdf.js/issues/1076#issuecomment-266518165 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AFfB-LbmIVIrJLnxwJlm8aDITDKh5tWLks5rHZi5gaJpZM4BlvMP
.

مرحبًا غوستافو ، شكرًا ...

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

lexcorp https://github.com/lexcorp إذا كان لا يزال هناك أي اهتمام ، في
الأقل يتم تحديث روايتي بما يكفي لتجميعها. 👍

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/mozilla/pdf.js/issues/1076#issuecomment-266518165 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AFfB-LbmIVIrJLnxwJlm8aDITDKh5tWLks5rHZi5gaJpZM4BlvMP
.

هل هناك مشكلة في سبب عدم سحب دعم التوقيعات الرقمية إلى ملف pdf.js؟

يرجى متابعة المناقشة في # 7702.

أنا مهتم بالاستماع إلى أشخاص حول حالات استخدامهم للتحقق من صحة التوقيع في PDFjs. يرجى مراسلتي عبر البريد الإلكتروني على موقع peculiarventures.com مع حالة الاستخدام الخاصة بك.

سأكون مهتمًا أيضًا بسماع حالات الاستخدام الخاصة بك لتسجيل الدخول إلى PDFjs ، إذا كنت مهتمًا بهذا السيناريو ، فأنا أرغب أيضًا في سماع حالة الاستخدام الخاصة بك.

لا يدعم فرع sig-check-support الخاص بـ pdf.js IE و Firefox تمامًا لأنه لا يمكن الحصول على WebCrypto ، هل لديك أي فكرة للتعامل معه؟

مرحبًا يا رفاق - هل التحقق من التوقيع الرقمي يعمل بالفعل؟

نفس السؤال هنا: هل من المفترض أن تعمل التوقيعات الرقمية مع أحدث إصدار ثابت يمكن تنزيله من https://mozilla.github.io/pdf.js/getting_started/#download ؟

FWIW: لقد اختبرت الإصدار التجريبي المتاح حاليًا ولا يمكنني رؤية أي توقيعات. الشيء الوحيد الذي لاحظته هو السطر التالي في وحدة تحكم المتصفح:

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

لا ، لم يتم تنفيذ التوقيعات الرقمية بعد. أي شخص يرغب في العمل على هذا مرحب به لتقديم طلب سحب. شكر.

أريد العمل على هذه الوظيفة. يمكن لأي شخص أن يعطيني بعض الإرشادات حول المكونات الداخلية لملف PDF.js؟

هناك بعض الأعمال الأولية المذكورة أعلاه والتي قد تتمكن من استخدامها. تأكد من قراءة الويكي لمعرفة نمط الكود وإرشادات الاختبار.

wolvz : مرحبًا أي جزء في viewer.js سيكون إلغاء التعليق هذا؟ يبدو أن المستودع الخاص بك هو المصدر الأصلي لـ pdf.js

على الرغم من أن معظم المستخدمين قد يستخدمون ملفات الإصدار الثابت.

نظرًا لأن المكون الإضافي Adobe Acrobat سيكون قديمًا عندما يتم إصدار Mozilla Firefox 59 ESR ، فإن ميزات مثل عرض التوقيعات الرقمية أصبحت الآن مطلوبة حقًا في ملف pdf.js لمستخدمي المؤسسات.

لقد قمنا بتنفيذ حل التوقيع الرقمي على أساس PKIjs و PDFjs القادر على التحقق من التوقيعات الرقمية وإنشائها. يمكنك أن ترى مثالاً على ذلك يعرض قانون التوقيع الرقمي الأمريكي هنا .

image

يثق العارض حاليًا في CAs في قائمة eIDAS الموثوق بها بالإضافة إلى مصدري Mozilla الموثوق بهم S / MIME.

إذا واجهت أي مشاكل ، أرسل لي بريدًا إلكترونيًا على

rmhrisk هل يمكنك تزويد بنموذج التعليمات البرمجية؟

xrkolovos الغالبية العظمى من العمل اللازم لجعل التوقيع والتحقق من العمل مفتوح المصدر ؛ يتضمن https://github.com/PeculiarVentures/PKI.js ، https://github.com/PeculiarVentures/ASN1.js ، https://github.com/PeculiarVentures/xadesjs/ ، https://github.com / PeculiarVentures / tl-create و https://github.com/PeculiarVentures/webcrypto-liner.

لقد انتهينا أيضًا من إنشاء مكتبة PDF الخاصة بنا (على الرغم من أننا نستخدم ملفات PDFj للعرض) حتى نتمكن من إنشاء العديد من أنواع التوقيعات المختلفة التي يسمح بها PDF. سيتم الإعلان عن هذه المكتبة في النهاية ولكنها ليست جاهزة للاستهلاك العام في هذه المرحلة.

لن يتم نشر المصدر لمشاهدنا ولكن مع المكتبات المذكورة أعلاه ، يمكن لشخص ما إعادة إنتاج التحقق في مشاهديهم. لدينا مثال أساسي عن كيفية القيام بذلك هنا: https://pkijs.org/examples/PDFexample.html سيحتاج فقط إلى دمجه في المشاهدين.

متى سيتم دمجه مع pdf.js؟

Aarbel في هذه المرحلة ، لا أعرف متى سنجد الوقت لإعادة بناء ما لدينا حتى يمكن دمجه بسهولة ، لكننا نرغب في التحقق من العثور على نفسه في PDFjs. مع ذلك ، أعرب فريق PDFjs سابقًا عن قلقه بشأن الحجم الذي ستمثله هذه الميزة بسبب التبعيات الضرورية. طالما أن هذا مصدر قلق ، فلن يكون من المنطقي قضاء الوقت الهندسي للقيام بهذا العمل.

IMHO ، عدم تنفيذه قبل إصدار Firefox 59 (ESR) يعني نهاية Firefox في المؤسسة إذا كان بإمكان Chrome أو Edge قراءة التوقيعات الرقمية.

FrenchHope لا

أي تحديث على هذه الوظيفة؟

MustafaHosny اللهم امين يارب :)

كما أوضحت في https://github.com/mozilla/pdf.js/pull/7702#pullrequestreview -4866355 ، ستكون الخطوة الأولى هي إنشاء واجهة برمجة تطبيقات مجردة تسمح بدمج أي PKI / تشفير مخصص مع PDF.js.

rmhrisk لا أهتم بمستخدمي Chrome. أهتم بمستخدمي مشروع Firefox. سيستخدم الكثير الآن متصفح Edge أو Internet Explorer إذا لم يعد بإمكان Firefox التحقق من التوقيعات الرقمية باستخدام المكون الإضافي Adobe Acrobat Reader.

تهاجر العديد من الشركات إلى Windows 10 الآن ...

لا يمكن لـ Edge أو IE.

يمكن لـ rmhrisk IE ، باستخدام Adobe Acrobat Reader ActiveX.

تحرير: يمكن أن تعرض Edge التوقيع الرقمي ولكنها لا تعلمك بصحة التوقيع كما يفعل Adobe Acrobat Reader.

تم إهمال ActiveX ولن يعمل في النهاية.

الحافة لا تثلج التوقيع الرقمي فهي تعرض الصورة في تعليق توضيحي بغض النظر عن حالة التوقيع.

مرحبًا ، ما هو الوضع الحالي لهذه الميزة؟

لم يتم العمل عليه الآن ، ولكن مؤخرًا أظهر شخص ما اهتمامًا بالكود أعلاه على IRC. ستكون الخطوة الأولى حقًا هي https://github.com/mozilla/pdf.js/issues/1076#issuecomment -374244765.

مرحبًا ، هل لديك أي تاريخ متوقع مثل Dic 2018 أو ربما 2019 لإصدار API؟
شكرا على عارض pdf بالمناسبة ، يعمل بشكل ممتاز

كنت أرغب في تنفيذ الإصلاح البسيط المذكور أعلاه ... مع التعليق على الأسطر التالية:

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

ومع ذلك ، هذا يسبب خطأ في وحدة التحكم (من util.js: 418). هل يعرف أحد سبب هذه المشكلة (بخلاف حقيقة أن التوقيع معروض الآن)؟

خطأ:

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)

تضمين التغريدة
حاولت وإذا قمت بالتعليق

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

في ملف pdf.worker.js المدمج ، ثم يعمل.

سيكون من الجيد توفير خيار لهذا على الأقل. في حالتنا على سبيل المثال ، نعلم بالفعل أن التوقيع صحيح ، لأننا نتحقق من صحة التوقيعات من قبل.

strazovan شكرا ، ووافق. لقد قمت بإنشاء علامة يمكن تعيينها في default_preferences.json. يمكنني نشر هذه التغييرات إذا كنت مهتمًا!

brianholle مرحبًا ،

hanxiaodao أنت تقول أنه عند التعليق على كود المنع:

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

لديك مشاكل في العرض في IE؟

brianholle أشكركم على ردكم. أنا أتبع مثالك , ولكن كانت هناك مشكلة في IE 11. يحجب الفصل الأحمر من التوقيع الرقمي محتوى النص.
هذا هو التأثير على الكروم.
chrome pic
هذا هو التأثير على IE11.
ie11_pic

هل يمكننا الحصول على أي تقديرات من المشرفين إذا كان سيتم وضع أي جهود في التحقق من التوقيعات؟

إنها ليست أولوية بالنسبة لنا في الوقت الحالي ، ولكن إذا أراد أي شخص المساهمة في ذلك (انظر التعليقات أعلاه لمعرفة كيفية تنفيذها) ، فنحن على استعداد للنظر في دمج هذا في PDF.js.

نحن مهتمون أيضًا بإظهار التوقيعات الرقمية التي لا يمكن التحقق منها. من فضلك ، انظر الى المثال المرفق.
Verpf-Erklärg-Bundesdatenschutz-Sig.pdf

عندما أعلق:
إذا (data.fieldType === 'Sig') {
// this.setFlags (AnnotationFlag.HIDDEN) ؛
}

خطأ:

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)

ولماذا لا تعرض "div. annotationLayer"

هاها ، أعرف هذا ... إنه مرتبط بـ # 10350. لذلك أنت بحاجة إلى التعليق على هذا السطر:
// this.setFlags (AnnotationFlag.HIDDEN) ؛
وأضف هذا السطر بعد ذلك:
data.fieldValue = خالية ،

كيف يتم تكوين pdf أو pdf_viewer لتمكين use.js الذي يتحكم في مفتاح الختم المعروض؟ هناك بعض خيارات AnnotationFlag في ملف util.js مثل INVISIBLE 0x01 、 HIDDEN 0x02. أقوم بتعديل AnnotionFlag في pdf.worker.js من HIDDEN إلى PRINT. هل يمكنني تكوينها بدون هذه الطريقة؟

يجب أن تكون ميزة لطيفة للغاية. نأمل أن تكون هذه ميزة قريبًا!

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

هل pdfjs مشروع ميت؟ لماذا لم يطبقوا لسنوات عديدة أكثر الميزات المطلوبة ؟؟

image

أريد أن أحقق أنه يمكنني إظهار إشعار صغير في مكان ما في PDF.js بأن التوقيعات الرقمية لم يتم التحقق منها. أحصل على هذا العمل على Chrome ، ولكن ليس على المتصفحات الأخرى. إنها ليست أفضل حالة ، لكننا نريد حقًا إظهار تلك التوقيعات حتى لو لم يتم التحقق من صحتها بنسبة 100٪. لقد حاولت تغيير كود pdf.worker.js في القطعة حيث this.setFlags (AnnotationFlag.HIDDEN) ؛ وقف. لقد أضفت بناء "document.getElementbyId" حيث أعرض الحاوية الخاصة بي عندما يكون هناك توقيع واحد أو أكثر. لكن جميع المتصفحات (باستثناء الكروم) لا تتعرف على "المستند". هل هناك خيار لإضافة خاصية على المستند أو شيء ما ، واستخدامه في viewer.js؟ هناك المزيد من الإنشاءات باستخدام getElementbyId. أي مساعدة ستكون رائعة.

لقد قمنا مؤخرًا بلف العارض الذي يدعم التحقق من التوقيع في مكون ويب و iframe ؛ يمكنك معرفة المزيد حول كيفية استخدامه هنا: https://verify.ink/

rmhrisk هذا رائع !!!

brianholle أشكركم على ردكم. أنا أتبع مثالك , ولكن كانت هناك مشكلة في IE 11. يحجب الفصل الأحمر من التوقيع الرقمي محتوى النص.
هذا هو التأثير على الكروم.
chrome pic
هذا هو التأثير على IE11.
ie11_pic
لدي نفس السؤال في IE ، هل قمت بحل هذا؟

تتكون منظمتنا من أكثر من 2000 شخص. كلهم يستخدمون Chrome ، وليس Firefox لأن Firefox لا يمكنه عرض توقيعات PDF بشكل صحيح.
أعتقد أن هذا يجب أن يكون أولوية بالنسبة لموزيلا.

wolvz : أي تقدم من جانبك؟

+1

+1

لقد قمنا مؤخرًا بلف العارض الذي يدعم التحقق من التوقيع في مكون ويب و iframe ؛ يمكنك معرفة المزيد حول كيفية استخدامه هنا: https://verify.ink/

تضمين التغريدة
رايان ، هل فكرت في فتح نسخة من هذا المتخيل للمجتمع؟

لقد قمنا بتنفيذ حل التوقيع الرقمي على أساس PKIjs و PDFjs القادر على التحقق من التوقيعات الرقمية وإنشائها. يمكنك أن ترى مثالاً على ذلك يعرض قانون التوقيع الرقمي الأمريكي هنا .

image

يثق العارض حاليًا في CAs في قائمة eIDAS الموثوق بها بالإضافة إلى مصدري Mozilla الموثوق بهم S / MIME.

إذا واجهت أي مشاكل ، أرسل لي بريدًا إلكترونيًا على

تضمين التغريدة
رايان ، هل فكرت في فتح نسخة من هذا المتخيل للمجتمع؟

lexcorp أنشأنا https: /verify.ink بحيث يمكنك بسهولة تضمين عارضنا كان أحد مكونات الويب.

إضافته سهلة:

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

أضفنا مؤخرًا دعمًا لمتاجر الجذر المخصصة أيضًا:
https://verify.ink/guides#root- الشهادات

من الخيوط المختلفة المتعلقة بالتوقيعات الرقمية ، كان لدي انطباع بأن السبب الرئيسي للتقدم المفقود هو أنه غير قادر على التحقق من التوقيعات كشرط مسبق لعرضها.

هل من المنطقي التمييز بين حالتي الاستخدام "التحقق من التوقيع" و "توقيع العرض"؟

أعتقد أن هناك الكثير من حالات الاستخدام حيث يكون عرض التوقيعات التي لم يتم التحقق منها (إذا لزم الأمر مع تحذير أضافه فريق المشروع المحدد) هو كل ما هو مطلوب وكافي. إذا كان هذا ممكنًا بالفعل مع تعديلات طفيفة على الكود ، فلماذا لا تكون هذه الوظيفة الرسمية يمكن تشغيلها أو إيقاف تشغيلها؟

المشكلة في عرض التوقيع إذا كان غير صالح هي أنك تعطي المستخدمين انطباعًا بأنه صحيح.

تهدف التوقيعات الرقمية ، على عكس نظيراتها الاصطناعية الرطبة ، إلى الإشارة إلى كلٍّ من صحة التوقيع والنية المرتبطة به.

من خلال عرض صورة التوقيع دون التحقق من صحتها ، فإنك تقترح على المستخدم أنها أصلية عندما يمكن أن تكون مجرد نسخة من صورة.

ولكن ليس كل التوقيعات الرقمية الصالحة لها تمثيل مرئي في ملف PDF ، أليس كذلك؟ يسمح PDF أيضًا بالتوقيع بدون تمثيل مرئي على حد علمي.

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

ولكن ليس كل التوقيعات الرقمية الصالحة لها تمثيل مرئي في ملف PDF ، أليس كذلك؟ يسمح PDF أيضًا بالتوقيع بدون تمثيل مرئي على حد علمي.

كلا العبارتين صحيحتان 1) لا تحتوي جميع ملفات PDF على تمثيل مرئي (معظمها يفعل ذلك). 2) يسمح PDF بالتوقيع الواسع للمستند. ومع ذلك ، في هذا الخطأ ، ما رأيته هو الاهتمام بإظهار التوقيع المرئي المرتبط بالتوقيع الرقمي وليس التوقيع الواسع للمستند.

قد يكون هناك خطأ آخر في الملف لدعم التوقيع الواسع للمستند والذي لا يحتوي على تمثيل مرئي ولكني لا أتذكر طلبًا واحدًا لهذا في أي من الأخطاء المتعلقة بـ PDFjs الموجودة على التوقيعات الرقمية.

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

ومع ذلك ، هناك أيضًا سؤال حول ما يجب أن تختاره مكتبة مثل PDF.js أيضًا. في رأيي ، كشف خيار غير آمن ، وسهل الفهم بسهولة ، وسيؤدي إلى نتائج أمنية سيئة للمستخدم النهائي للمكتبة ، ليس بالأمر الذي يجب على منتجي المكتبة تسهيله.

تخيل لو كانت هذه الميزة مكتملة لكان من المفيد جدًا أثناء هذا الحجر الصحي بواسطة COVID-19 ، تخيل عدد المعاملات والعقود وما إلى ذلك.

كان من الممكن إجراؤها من المنزل ، ومع ذلك فقد رأيت أن هذه الوظيفة ظلت راكدة لسنوات ، ولا أعرف السبب ، لكنني أعتبر أنه بالاقتران مع الأدوات الأخرى ، يمكن أن يكون مفيدًا للغاية للعمل التعاوني ، المكتب المنزلي ، إلخ

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

كما أنني أتفق تمامًا على أن التوقيع الرقمي هو بالفعل ميزة كبيرة مفقودة.

ومع ذلك ، هناك أيضًا سؤال حول ما يجب أن تختاره مكتبة مثل PDF.js أيضًا. في رأيي ، كشف خيار غير آمن ، وسهل الفهم بسهولة ، وسيؤدي إلى نتائج أمنية سيئة للمستخدم النهائي للمكتبة ، ليس بالأمر الذي يجب على منتجي المكتبة تسهيله.

يتم تنفيذ المكتبة من قبل المطورين الذين يجب أن يكونوا على دراية بالأمان.
من ناحيتي ، إذا كانت لدي الميزة ، فسأعرض بالطبع التوقيع ولكن أيضًا أتحقق من جانب خادم التوقيع وأتحقق منه حتى أتمكن من إظهار تحذير إذا كان التوقيع غير صالح.

تضمين التغريدة
هل تخطط لفتح المصدر للمجتمع؟ نظرًا لعدم وجود حالة واحدة يمكنني فيها 1 / السماح بإتاحة المستندات على الإنترنت 2 / السماح لطرف ثالث بالوصول إلى المستندات 3 / السماح لطرف ثالث بحقن جافا سكريبت في متصفح المستخدم.
سيكون ذلك إضافة رائعة إلى ملفات pdfjs.

تضمين التغريدة
هل تخطط لفتح المصدر للمجتمع؟ نظرًا لعدم وجود حالة واحدة يمكنني فيها 1 / السماح بإتاحة المستندات على الإنترنت 2 / السماح لطرف ثالث بالوصول إلى المستندات 3 / السماح لطرف ثالث بحقن جافا سكريبت في متصفح المستخدم.
سيكون ذلك إضافة رائعة إلى ملفات pdfjs.

نحن نفتح المصدر كل المكتبات التي استخدمناها لإنشاء عارضنا ، وهناك الكثير منها والعديد منها معقد للغاية ؛ على سبيل المثال ، انظر إلى قطعة PKIjs التي تتعامل مع التحقق من صحة الشهادة للعارض. نقدم أيضًا التراخيص التجارية مع الدعم.

لن نفتح مصدرًا للمشاهد ، مما يجعل هذا العمل يستغرق قدرًا كبيرًا من الوقت والاستثمار وهذا الوقت له قيمة. يسعدنا دعم الآخرين في استخدام المكتبات مفتوحة المصدر التي أنشأناها لجعل ذلك ممكنًا.

إعادة: 1 ؛ لا يطلب العارض وجود المستندات على الإنترنت.

إعادة: 2 ؛ لا يطلب العارض السماح لطرف ثالث بالوصول إلى المستندات.

إعادة: 3 ؛ من الممكن استضافة مكون الويب حتى تتمكن من مراجعة تحديثات المكون والتحكم فيها.

كما أنني أتفق تمامًا على أن التوقيع الرقمي هو بالفعل ميزة كبيرة مفقودة.

ومع ذلك ، هناك أيضًا سؤال حول ما يجب أن تختاره مكتبة مثل PDF.js أيضًا. في رأيي ، كشف خيار غير آمن ، وسهل الفهم بسهولة ، وسيؤدي إلى نتائج أمنية سيئة للمستخدم النهائي للمكتبة ، ليس بالأمر الذي يجب على منتجي المكتبة تسهيله.

يتم تنفيذ المكتبة من قبل المطورين الذين _يجب_ أن يكونوا على دراية بالأمن.
من ناحيتي ، إذا كانت لدي الميزة ، فسأعرض بالطبع التوقيع ولكن أيضًا أتحقق من جانب خادم التوقيع وأتحقق منه حتى أتمكن من إظهار تحذير إذا كان التوقيع غير صالح.

"يجب أن تكون" و "تكون" شيئان مختلفان. يعد عرض صورة التوقيع عندما يكون التوقيع غير صالح أو غير موثوق به مثالًا رائعًا على نوع القرار الذي قد يتخذه شخص ما دون فهم العواقب تمامًا.

تخيل لو كانت هذه الميزة مكتملة لكان من المفيد جدًا أثناء هذا الحجر الصحي بواسطة COVID-19 ، تخيل عدد المعاملات والعقود وما إلى ذلك.

كان من الممكن إجراؤها من المنزل ، ومع ذلك فقد رأيت أن هذه الوظيفة ظلت راكدة لسنوات ، ولا أعرف السبب ، لكنني أعتبر أنه بالاقتران مع الأدوات الأخرى ، يمكن أن يكون مفيدًا للغاية للعمل التعاوني ، المكتب المنزلي ، إلخ

أتفق تمامًا على أن هذا هو السبب في أننا أنشأنا وفتحنا مصادر مفتوحة لجميع المكتبات التي جعلت المشاهد ممكنًا. ولهذا السبب أيضًا نسمح للأشخاص باستخدام عارضنا مجانًا.

بفضل العمل الذي قمنا به ، يمكن لأي شخص بالتأكيد إعادة إنشاء عمل العارض الذي قمنا به بجهد أقل بكثير وإرسال العلاقات العامة المرتبطة به إلى PDFjs ، وسنكون سعداء بمراجعة رموز العلاقات العامة تلك.

أحتاج إلى عرض ملفات PDF في تطبيق Angular CLI الخاص بي ، في سياق لا تكون فيه صلاحية التوقيع ذات صلة ، والجزء المهم الوحيد هو الحصول على عرض دقيق.
كانت حالة الاختبار الخاصة بي هي نموذج pdf بتوقيع رقمي من Adobe.
نظرًا لأنني جربت العديد من الإجابات بالفعل ، فسوف أقوم بتلخيص نتائج أبحاثي أدناه.

الإجابة الأكثر شيوعًا التي رأيتها هي التعليق على الأسطر التالية في pdf.worker.js (الأسطر 48353 إلى 48355):

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

هذا ، ومع ذلك ، لم ينجح.

التعليق على الأسطر التالية في annotation.js مباشرة في pdfjs-dist لم يعمل أيضًا (الأسطر 285 إلى 287):

case 0:
        this.color = null;
        break;

هذا لم ينجح أيضا، على الرغم من أنني لم أكن أعرف كيفية خط مكان كود معين:
(<any>window).pdfWorkerSrc = '<path_to_file>/pdf.worker.js';

لقد حاولت على الأقل الحصول على التعليقات التوضيحية في الصفحة ، لكن كل صفحة عادت مصفوفة فارغة:

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);
}); 

من المهم أن يعرض تطبيقي ملف pdf كما هو. على الأقل ، أود أن أكون قادرًا على الحصول على المستطيلات المحيطة بالتوقيع لعرض عنصر نائب بدلاً منها.
هل يمكن لأي شخص مساعدتي؟

أحتاج إلى عرض ملفات PDF في تطبيق Angular CLI الخاص بي ، في سياق لا تكون فيه صلاحية التوقيع ذات صلة ، والجزء المهم الوحيد هو الحصول على عرض دقيق.
كانت حالة الاختبار الخاصة بي هي نموذج pdf بتوقيع رقمي من Adobe.
نظرًا لأنني جربت العديد من الإجابات بالفعل ، فسوف أقوم بتلخيص نتائج أبحاثي أدناه.

مرحبًا ، أعتقد أنك جربته تقريبًا من المحاولة الأولى ... هل جربت هذا https://github.com/mozilla/pdf.js/issues/1076#issuecomment -446959325؟

لقد جربتها للتو: لم يتغير شيء.
اي فكرة اخرى؟

تم فتح هذا الموضوع منذ فترة طويلة الآن ، ما هي الخطة الحالية لمعالجته ، وكيف يمكننا المساعدة؟

إذا لم أتمكن من عرض التوقيع ، على أقل تقدير ، أود عرض مستطيل نائب حيث يجب أن يكون.
(مجرد معرفة إحداثيات x و y وكذلك عرض وطول التوقيع)

بالطبع ، سيظل عرض التوقيع هو أفضل سيناريو (مرة أخرى ، لست بحاجة إلى التحقق منه في حالة الاستخدام الخاصة بي).

هل سيكون خيارًا لإضافة خيار عرض لعرض التوقيعات التي لم يتم التحقق منها؟
بهذه الطريقة يمكن لمستخدمي pdf.js أن يقرروا ما إذا كانوا يريدون المخاطرة بعرضها أم لا.

يعد عرض توقيع تشفير غير صالح سيئًا مثل عرض توقيع تم التحقق من صحته بشكل غير صحيح:
https://www.pdf-insecurity.org/

ماذا لو تم التحقق من صحة التوقيع بشكل صحيح من قبل عن طريق دعنا نقول خدمة الخلفية؟
هذا يعني أن التوقيع كان جيدًا ولكن لا يزال يتعذر عرضه في تطبيق العميل.

خيار التقديم لعرض التوقيع أو عدمه سيمكن مستخدمي pdf.js من التحقق من صحة التوقيع بطريقة ما ثم يقررون بأنفسهم عرضه أم لا.
سيؤدي ذلك أيضًا إلى إزالة العبء عن مطوري pdf.js لتوفير التحقق من صحة التوقيع على الإطلاق حيث لا ينبغي أن يكون هذا جزءًا من pdf مكتبة عرض.
إن عدم عرض التوقيع بشكل صارم على الإطلاق يحد من حالات استخدام pdf.js.

ماذا لو تم التحقق من صحة التوقيع بشكل صحيح من قبل عن طريق دعنا نقول خدمة الخلفية؟
هذا يعني أن التوقيع كان جيدًا ولكن لا يزال يتعذر عرضه في تطبيق العميل.

خيار التقديم لعرض التوقيع أو عدمه سيمكن مستخدمي pdf.js من التحقق من صحة التوقيع بطريقة ما ثم يقررون بأنفسهم عرضه أم لا.
سيؤدي ذلك أيضًا إلى إزالة العبء عن مطوري pdf.js لتوفير التحقق من صحة التوقيع على الإطلاق حيث لا ينبغي أن يكون هذا جزءًا من pdf مكتبة عرض.
إن عدم عرض التوقيع بشكل صارم على الإطلاق يحد من حالات استخدام pdf.js.

القيام بالتحقق بين الخادم والعميل على ما يرام. إن تعريض العلم لعرض التوقيع على أنه صحيح ومصدق سيكون بمثابة مسدس قدم.

القيام بالتحقق بين الخادم والعميل على ما يرام. إن تعريض العلم لعرض التوقيع على أنه صحيح ومصدق سيكون بمثابة مسدس قدم.

نحن نتعامل مع تواقيع تم التحقق منها ولكن لا يمكننا عرضها (بدون القرصنة) في متصفح العملاء باستخدام pdf.js
إذن ما هو الخيار الآخر لعرض ملفات PDF في متصفح العملاء الذي تقترحه لتقديم التمثيل المرئي للتوقيع الذي تم التحقق منه؟

يمكنك تصحيح ملفات PDFj الخاصة بك قبل النشر للحصول على أي سلوك تحتاجه؟

هذا ما قصدته بكلمة "القرصنة" وهذا بالضبط ما نجبر على فعله حاليًا :-(

لا أفهم لماذا ما زلنا نطرح أسئلة حول المشكلة نفسها: "المتسللون" لم يعملوا حتى بالنسبة لي ، وما زلت في حاجة.

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

على الأقل ، أرغب حقًا في الحصول على موضع وحجم التوقيعات على المستند ، حتى أتمكن من عرض مربع رمادي في مكانهم مع "مرحبًا ، أيها المستخدم ، من المفترض أن يكون هناك توقيع" مكتوب عليهم.

في الوقت الحالي ، ليس لدى المستخدم القدرة على معرفة أن المستند موقّع في هذا المكان.
أليست هذه طريقة أسوأ للتهدئة؟

إذا كان هناك منطقي يسمح بعرض جميع التوقيعات الرقمية للمستند كمربعات قالب رمادية شفافة ، فسيكون ذلك مرضيًا بدرجة كافية ، ولن تثير هذه الميزة أي مشكلة أخلاقية / أمنية.

(أود أيضًا أن أقول إن المشكلة على ما يبدو معلقة منذ عام 2012 بأكثر من مائة تعليق ، في هذا الموضوع وحده. لا أعتقد أنني الوحيد الذي ينتظر هذه الميزة)

تبدو المربعات الرمادية وكأنها خطأ في العرض ومن المحتمل جدًا أن تفرط في تحميل الخط الساخن للدعم المقدم :-)
لدينا اختراق عملي في المكان ، وهذا يعمل بشكل جيد في الوقت الحالي ولكن من المسلم به أنه قبيح للغاية:

  1. قم بتنزيل النسخة الحالية والمترجمة والمصغرة من pdfjs-dist
  2. قم بتصحيح الأسطر المعنية في النسخة المنقولة.
  3. الإصدار كحزمة خاصة جديدة إلى npm-repo الداخلي.
  4. استخدم الحزمة المصححة بدلاً من حزمة pdfjs-dist الأصلية.

Ugliy أليس كذلك؟ لكنه يعمل ويجعل التوقيعات المضمنة على ما يرام.

تبدو المربعات الرمادية وكأنها خطأ في العرض ومن المحتمل جدًا أن تفرط في تحميل الخط الساخن للدعم المقدم :-)

نعم ، نعم ، نعم ، قصدت أي قالب / صورة / رسالة يمكن أن تكملها * يحتوي ملف pdf على توقيعات رقمية لا يمكن التحقق منها ، وبالتالي لم يتم عرضها. أي شيء يمكن أن يفهمه المستخدم إذا كانت الرسالة توضح ذلك.

  1. قم بتصحيح الأسطر المعنية في النسخة المنقولة.

أستخدم حاليًا Angular CLI مع تثبيت pdfjs-dist في وحدات node_modules الخاصة بي ، لكن أي حل كتبته قبل بضع مشاركات لم ينجح في جانبي ، ولم يفعل هذا أيضًا:

مرحبًا ، أعتقد أنك قد انتهيت من المحاولة الأولى تقريبًا ... هل جربت هذا # 1076 (تعليق) ؟

هل فاتني شيء ما ، أم أن حالتي خاصة جدًا بهذا الإصلاح؟

تابعنا الشرح في هذا الموضوع.
https://github.com/mozilla/pdf.js/issues/4743#issuecomment -163953288

لقد غيرنا هذا الجزء بشكل أساسي:

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

الى هذا:

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

أعلم أنه يمكنك إزالة "إذا" بالكامل ولكننا أردنا أصغر رقعة ممكنة.

ييكيس. هذا بالفعل هو الإصلاح الذي لم ينجح من جانبي.
سأحاول مرة أخرى عندما أعود إلى ملف pdf الذي يعرض جزءًا من تطبيقي.
لم أقم بإنشاء الحزمة الخاصة بي حتى الآن ، ولكن تغيير الملف مباشرة في node_modules / pdfjs-dist لم يغير أي شيء آخر مرة حاولت.

هل قمت بتغيير كلا الملفين pdf.worker.js و pdf.worker.min.js
كان هذا ضروريا في نهجنا.

هل قمت بتغيير كلا الملفين pdf.worker.js و pdf.worker.min.js
كان هذا ضروريا في نهجنا.

لقد طرحت نقطة ممتازة ربما أغفلتها!
سأحاول ذلك بسرعة اليوم ، وأرى ما إذا كان يعمل.

مرحبًا ، أحب أسلوبك ، لكن للأسف لم ينجح معي
لقد غيرت الخطوط مثل هذا:

تابعنا الشرح في هذا الموضوع.
# 4743 (تعليق)

لقد غيرنا هذا الجزء بشكل أساسي:

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

الى هذا:

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

أعلم أنه يمكنك إزالة "إذا" بالكامل ولكننا أردنا أصغر رقعة ممكنة.

ثم قمت ببنائه gulp generic واستخدمت الموارد المبنية.

هل قمت بتغيير كلا الملفين pdf.worker.js و pdf.worker.min.js
كان هذا ضروريا في نهجنا.

تم إنشاء pdf.worker.js لكنك ذكرت pdf.worker.min.js ، كيف تم بناء ذلك وأين يتم تخزينه؟
ماذا ينقصني؟

شكرا جزيلا مقدما

@ ll-priva لم نبني pdf.js بأنفسنا.
كما قلت في التعليق https://github.com/mozilla/pdf.js/issues/1076#issuecomment -658601553 قمنا بالفعل بتنزيل الإصدار المبني بالفعل من pdfjs-dist وقمنا بتصحيح الإصدارات المجمعة من pdf.worker.js و pdf.worker.min.js .

توضيحي في https://github.com/mozilla/pdf.js/issues/1076#issuecomment -658609803 ربما كان غير واضح بعض الشيء ، آسف.
قمنا بتنفيذ الحل الموصوف من خلال تصحيح الحزمة التي تم إنشاؤها مسبقًا https://www.npmjs.com/package/pdfjs-dist.
ثم استخدمنا هذه الإصدارات المصححة من pdf.worker.js و pdf.worker.min.js لدفع حزمة خاصة pdfjs-dist إلى مستودعنا الداخلي npm.
أخيرًا وليس آخرًا ، استخدمنا هذه النسخة المصححة في كود الإنتاج الخاص بنا بدلاً من الحزمة الرسمية pdfjs-dist .

آمل أن يجعل هذا نهجنا أكثر وضوحًا.

PSpSynedra شكرا جزيلا لك. هذا عمل معي ايضا

لقد عدت إلى هذه المهمة لأول مرة في غضون أسابيع قليلة ، لكنها ما زالت لا تعمل من جانبي.
لم أقم بإنشاء حزمة خاصة بي في الوقت الحالي: طالما لم أقم بإعادة البناء ، فإن تعديل الملفات في node_modulespdfjs-dist مباشرة كان يجب أن يعمل (محليًا ، إذًا سأضطر بالفعل إلى استيراد ملف pdf.js المعدل باعتباره الأصول أو الحزمة).

البحث عن "Sig" في المجلد يعطي 4 نتائج مختلفة للملف:

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

لقد قمت بتحرير كل هذه الأحداث الأربعة لإزالة محتوى "إذا" الذي مسح حقل التوقيع ووضع علامة لإخفائه ، كما ذكر أعلاه.
لم يحدث شيء مختلف: تُرجع getAnnotations () مصفوفة فارغة ، ولا تزال التوقيعات الموجودة غير معروضة.

ما زلت أتلقى هذه الرسالة أيضًا في وحدة التحكم ، والتي ليست حتى خطأ أو تحذير (pdf.worker.js: 2965: 14):

تحذير: نوع حقل عنصر واجهة المستخدم غير المطبق "Sig" ، والعودة إلى نوع الحقل الأساسي.

بالنظر إلى الشفرة ، فهذا يعني أن annotation.js يلفها في WidgetAnnotation "أساسي" ، مما يعني أن الرسالة لا تبدو مشكلة ، فقط العلامات التي أزلتها.

هل فاتني شيء؟ لقد قمت بتحرير ملف min.js بالإضافة إلى ملف js ، الموجودين في مجلد الإنشاء وعلى هذا النحو يجب أن يكونا الملفات المستخدمة ، لذلك كان يجب أن يعمل كل شيء ...
ماذا فعلت بالضبط @ ll-priva و PSpSynedra ؟

Epsiom هذا ما فعلته للتو ، وقد نجح معي في حوالي 5 دقائق: https://github.com/mozilla/pdf.js/issues/1076#issuecomment -446959325

تحتاج إلى التعليق خارج this.setFlags(AnnotationFlag.HIDDEN); بالإضافة إلى إضافة data.fieldValue=null . الملف الوحيد الذي قمت بتعديله هو pdf.worker.js ، وهو في حالتنا من مكتبة pdfjs-dist لذلك تم تصغيره بالفعل

Epsiom والآخرين الذين قد ينتهي بهم الأمر هنا.
لدي نفس المشكلة ، قمت بتحرير ملفات عامل pdf دون نتيجة.

في حالتي ، أستخدم https://github.com/VadimDez/ng2-pdf-viewer لعرض ملف pdf في تطبيق زاوي. كانت هذه الوحدة تقوم بتحميل عامل pdf مباشرة من cloudflare ، وليس من الملف المحلي. لذا تحقق مما إذا كان تطبيق الويب يستخدم بالفعل ملف pdf.worker.js المعدل. يمكنك التحقق من خلال النقر فوق تحذير نوع حقل عنصر واجهة المستخدم "Sig" في وحدة التحكم وتحريك الماوس إلى اسم الملف.

konum التحذير من " http: // localhost : 4200 / أصول / بائع / pdf.worker.js" ، لكنني علقت بالفعل على سطري هذا الملف كما قيل من قبل:
if (data.fieldType === 'Sig') { //this.setFlags(AnnotationFlag.HIDDEN); //data.fieldValue = null; }

لا يوجد حتى الآن توقيع رقمي في الأفق ...

Epsiom لم يعمل لي أيضا. لا تزال تبحث في ذلك.

Epsiom تمكنت من الحصول على التوقيع لعرضه. في pdf.worker.js أضف هذا في السطر 18480
الحالة "سيج":
إرجاع SquareAnnotation الجديد (المعلمات) ؛

هل التبديل فوق هذا الخط مباشرة.
(0، _util.warn) ('نوع حقل عنصر واجهة المستخدم غير المطبق "' + fieldType + '"،' + "الرجوع إلى نوع الحقل الأساسي.")؛

konum لم يعمل لي:
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 هل تستخدم أحدث إصدار من pdf.js؟ في pdf.worker.js ، يجب تحديد فئة SquareAnnotation.

Epsiom فقط للتوضيح ، يجب التعليق فقط this.setFlags(AnnotationFlag.HIDDEN); . يجب إضافة data.fieldValue = null; إذا لم يكن موجودًا ، لكن لا يجب التعليق عليه.

نحن نستخدم أيضًا حزمة pdfjs-dist ، لذلك قمنا بتعديل تلك الحزمة مباشرةً ، وفقًا لتعليق سابق. هل أنت متأكد من أن الكود الذي تعدله يتم تنفيذه بالفعل؟ إذا كانت في node_modules ، بناءً على التصميم الخاص بك ، فقد يتم تخزين بعض هذه الأصول مؤقتًا ، وربما لا تستخدم بالفعل الكود المعدل.

kjhangiani أتذكر بوضوح وجود أي وحدة تحكم إضافية تظهر في وحدة التحكم ، لذلك يتم تنفيذها بوضوح.
سأحاول إضافة data.fieldValue = null; عندما أعود إلى هذه المهمة ، ومعرفة ما إذا كان ذلك يعمل.

إضافة data.fieldValue = null; مرة أخرى في الكتلة if (data.fieldType === 'Sig') ، بالإضافة إلى console.log("TEST") فقط في حالة عدم حدوث شيء ، بينما ظهر "TEST" بشكل صحيح في وحدة التحكم ، بعد Warning: Unimplemented widget field type "Sig", falling back to base field type. المعتاد

اي فكرة اخرى؟

Epsiom تمكنت من الحصول على التوقيع لعرضه. في pdf.worker.js أضف هذا في السطر 18480
الحالة "سيج":
إرجاع SquareAnnotation الجديد (المعلمات) ؛

هل التبديل فوق هذا الخط مباشرة.
(0، _util.warn) ('نوع حقل عنصر واجهة المستخدم غير المطبق "' + fieldType + '"،' + "الرجوع إلى نوع الحقل الأساسي.")؛

لقد نجح ذلك معي ، لقد أنقذت يومي ، شكرًا لك.

yduybya ما مدى حداثة مشروعك؟
هل هناك أي خصوصية حوله؟
أعتقد أنني بحاجة إلى تحديث إصداري من pdf.js وتجربته مرة أخرى ، على الرغم من أنه حديث جدًا.

هل هناك أي طريقة سهلة لتحديث pdf.js على تطبيق Angular 9؟
لقد وجدت ملف pdf.worker.js الجديد هنا (http://mozilla.github.io/pdf.js/build/pdf.worker.js) ، لكن استبدال هذا الملف فقط لم ينجح (من الواضح).

لقد تتبعت مشروعي مرة أخرى إلى https://github.com/mozilla/pdf.js/issues/8836 و https://github.com/ashishyadav0019/pdfJS_angular4_Ts.git ، لكن هذه المشاريع تستخدم ملفات قديمة.

الملفات الموجودة على جيثب pdf.js وفي pdfJS_angular4_Ts.git غير مرتبطة ببعضها البعض.
هل يعرف أي شخص كيفية استيراد pdf.js بشكل صحيح في مشروع Angular 9 ، باستخدام ملفات محدثة؟

Epsiom For Angular 8 app) أعتقد أنه يجب أن يعمل على الزاوية 9) أنا أستخدم https://github.com/VadimDez/ng2-pdf-viewer.

من مستندات ng2-pdf-viewer:
بشكل افتراضي ، يتم تحميل العامل من cdnjs.cloudflare.com.
في مسار تحديث التعليمات البرمجية الخاص بك إلى العامل ليكون على سبيل المثال /pdf.worker.js
(نافذة مثل أي) .pdfWorkerSrc = '/pdf.worker.js'؛
يجب تعيين هذا قبل عرض مكون pdf-viewer.

سيؤدي استخدام هذا المشروع إلى إضافة تبعية pdfjs-dist إلى مشروعك. قم بتحرير node_modules / pdfjs-dist / build / pdf.worker.js باستخدام تلميح التعليق التربيعي.

konum أنا أستخدم pdf.js مباشرةً وليس ng2-pdf-viewer لأسباب متعددة ، من خلال الاستلهام من هذا: https://github.com/ashishyadav0019/pdfJS_angular4_Ts.git
لدي تبعية pdfjs-dist ، لكنها src/assets/vendor/pdf.worker.js المستخدمة.
اي فكرة ؟

Epsiom هل حاولت تحديث ملفات pdf.js و pdf.worker.js إلى أحدث كود؟

konum هذا هو بالضبط ما أحاول القيام به ، ولكن نظرًا لأن pdf.js نادرًا ما يستخدم في Angular ، حيث يبدو أن معظم المشاريع لا تحتاج إلا إلى ng2-pdf-viewer ، وبما أن الملفات المستخدمة في أحدث إصدار من pdf.js مختلفة ، فإن عملية القيام بذلك بعيدة كل البعد عن الوضوح للوهلة الأولى.

مرحبا،

تعليق this.setFlags (AnnotationFlag.HIDDEN) ، في pdf.worker.js في v2.6.347 لا تظهر صورة التوقيع.

هل كان هناك تغيير في ذلك؟

lainosantos نعم ، هناك تغيير. إذا قمت بإلغاء تنشيط عرض النموذج ، فستظهر التوقيعات مرة أخرى.

stephanrauh شكرا.

PDFViewerApplicationOptions.set('renderInteractiveForms', false);

هل هناك طريقة لتمكين النماذج وإظهار التوقيعات؟

lainosantos لا ، لكني وجدت جولة renderInteractiveForms تم إبطال مفعولها. يستخدم Angular ، لكن أعتقد أنه يمكنك استخراج الفكرة حتى إذا كنت تستخدم إطار عمل مختلف: https://medium.com/factory-mind/angular-pdf-forms-fa72b15c3fbd

لدي أمور أكثر إلحاحًا في الوقت الحالي ولا يمكنني قضاء الوقت في المهمة ، ولكن إذا تمكن أي شخص من استيراد نسخة محدثة من pdf.js على Angular 9 ، فسيكون ممتنًا للغاية.

Epsiom ها أنت هنا: https://www.npmjs.com/package/ngx-extended-pdf-viewer :)

stephanrauh ... حسنًا ، باستثناء أنني بحاجة إلى أن أكون متوافقًا مع IE11 وأن ​​أستخدم اللوحة القماشية فقط مباشرة للحصول على عارض pdf مخصص ، لذلك لا يمكنني استخدام ذلك ، للأسف.
لا يمكنني استخدام ng2-pdf-viewer أيضًا ، أو أي شيء من هذا القبيل ، فأنا أسأل حقًا عن pdf.js في حد ذاته ، وهي حالة متخصصة حقًا.

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

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

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

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

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

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

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