Pdf.js: دعم النموذج التفاعلي (AcroForm)

تم إنشاؤها على ٧ سبتمبر ٢٠١٦  ·  28تعليقات  ·  مصدر: mozilla/pdf.js

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

هذه مشكلة تعريفية لدعم النموذج التفاعلي (AcroForm) وفقًا للفصل 12.7 من مرجع PDF (http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf#G11 .2110737). يتضمن هذا جميع عناصر النموذج باستثناء حقول التوقيع ، والتي يتم تعقبها في # 1076. الهدف هو الحصول على https://github.com/mozilla/pdf.js/blob/master/test/pdfs/f1040.pdf.link للعرض بالكامل ، ولكن أيضًا لحل المشكلات المفتوحة الأخرى والعلاقات العامة.

عام

  • [x] إعداد الطبقة الأساسية وطبقة العرض لتنفيذ عناصر النموذج (# 7596)
  • [x] اختبار مرجعي (# 7602)
  • [x] التفضيل (# 7602)
  • [x] إزالة استخدام PDFJS.renderInteractiveForms (# 7640)
  • [x] رمز إنشاء اسم حقل المُعَدِّد WidgetAnnotation (# 7775)
  • [x] إعادة بناء العوامل أو توضيح مكان تقديم التعليقات التوضيحية

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

  • [x] المظاهر
  • [x] تخزين القيم المدخلة عندما يتم إتلاف الصفحة عندما لا تكون مرئية
  • [x] تم إدخال قيم الطباعة

    • قم بطباعة عناصر HTML أو عرض المحتويات على اللوحة القماشية (استخدم appendToOperatorList )

  • [x] تمكين بشكل افتراضي
  • [x] تحديث المثال (# 8030)
  • [x] أضف Firefox pref لتمكين / تعطيل النماذج (https://bugzilla.mozilla.org/show_bug.cgi؟id=1652145)

الحاجيات النصية

  • [x] عرض الحقول أحادية السطر (# 7602)
  • [x] أقصى طول للمقبض (# 7622)
  • [x] علامات المقبض: متعدد الأسطر وللقراءة فقط (# 7633)
  • [x] أعلام المقبض: مشط (# 7649)
  • [x] تبرير المقبض (# 7622)
  • [x] قم بتعقيم maxLen و textAlignment في اختبارات الوحدة والطبقة الأساسية لهذا (# 7629)

الحاجيات الاختيار

  • [x] عرض مربعات التحرير والسرد (# 7671)
  • [x] عرض مربعات القائمة (# 7671)

الحاجيات الزر

  • [x] عرض الأزرار الانضغاطية (# 9191)
  • [x] عرض مربعات الاختيار (# 7898)
  • [x] عرض أزرار الاختيار (# 7898)
4-annotations 4-form-acroform

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

هذه مشكلة تتبع (راجع https://github.com/mozilla/pdf.js/issues/7613#issuecomment-251895091) ، لذلك ليس هذا مكانًا للمناقشة أو الأسئلة. اتصل بنا على IRC في حالة وجود أسئلة أو تقديم مشكلة منفصلة إذا وجدت خطأ. شكرا.

_ (أقوم بإلغاء قفل المحادثة لأتمكن من السماح للمستخدمين باستخدام زر رد الفعل لقياس مدى الاهتمام بهذه الميزة ، ولكن ستتم إزالة التعليقات غير ذات الصلة.) _

ال 28 كومينتر

هذه مشكلة تعريفية لتتبع دعم النموذج التفاعلي (AcroForm) وفقًا للفصل 8.6 من مرجع PDF (https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7. pdf # page = 671 & zoom = auto ، -246244).

قد تكون فكرة جيدة أن تبني العمل بدلاً من ذلك على أحدث إصدار من مواصفات PDF ، فقط في حالة وجود أي اختلافات: http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/ pdfs / PDF32000_2008.pdf # G11.2110737.

أيضًا ، ربما تكون فكرة جيدة لإضافة عنصر TODO "عام" حول ضمان تغطية الاختبار المناسبة؟

تم تناول كلا العنصرين. شكرا لك!

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

أيضًا ، لطباعة النماذج ، قد نكون قادرين على استخدام (أو البناء على) وظيفة appendToOperatorList الموجودة بالفعل ، ولكن هذا سيتطلب بالتأكيد موارد الخطوط الموجودة في قاموس AcroForm الذي تم تحميله.

الشيء الآخر الذي ربما يجب أن نحاول دعمه ، هو استخدام لون النص الصحيح في طبقة العرض (لاحظ كيف أن النص في حقول النموذج f1040.pdf أزرق في Adobe Reader). وهذا ربما العلاقات في لأفضل وأكثر اكتمالا Appearance دعم تيار.

أخيرًا ، سؤال عام: هل سنتمكن فعليًا من دعم النماذج بطريقة ذات مغزى ، بدون دعم نصي جزئي (ومعقم جيدًا)؟

نقاط جيدة. لقد أضفتهم للتو إلى قائمة العناصر أعلاه. لا أعتقد أننا نحتاج حقًا إلى دعم البرنامج النصي لأن AcroForms تتطلب عمومًا ملء وطباعة. تُستخدم نصوص AFAIK فقط للتفاعل بين العناصر ، ولكن يمكننا تنفيذ الوظائف الأكثر استخدامًا بأنفسنا (مثل إعادة ضبط النموذج أو إجراءات الزر لطباعته). سيتعين علينا أن نرى مدى استخدام وظائف البرنامج النصي هذه على نطاق واسع.

أعلام المقبض: متعدد الأسطر والقراءة فقط

هناك علامات أخرى قد نحتاج إلى تجربتها ودعمها أيضًا ، أحد الأمثلة هو comb الذي يتحكم في التباعد بين الأحرف في حقل الإدخال. يتم استخدام ذلك بالفعل في الصفحة الثانية من f1040.pdf ، راجع حقل "رقم التعريف الشخصي (PIN)".

تبدو فكرة جيدة لقد أضفته إلى القائمة.

من المحتمل أيضًا أن تكون فكرة جيدة لمعرفة ما إذا كان رمز WidgetAnnotation الذي ينشئ الخاصية fullName يمكن تنظيفه أو تحسينه ، راجع https://github.com/mozilla/pdf.js /blob/6c263c19946af23b723f148d9f05118971e18b36/src/core/annotation.js#L640 -L670.

أيضًا ، فيما يتعلق بـ WidgetAnnotation s ، يبدو أن الأنواع المختلفة يمكن أن يكون لها متطلبات مختلفة لإدخال V في قاموس التعليقات التوضيحية ، لذلك قد يكون من الأفضل جلب والتحقق من data.fieldValue في _each_ فئة فرعية محددة من WidgetAnnotation .

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

ياtimvandermeij
متى ستكون هذه الوظيفة متاحة؟ كيف لي ان اساعد؟

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

شكرا لك تيم ، ماذا يمكنك أن تخبرني عن التوقيعات الرقمية؟ يوجد تقدم وفقًا لسلسلة المناقشة هذه https://github.com/mozilla/pdf.js/issues/1076

تم الإبلاغ عن ذلك من قبل المستخدم: soa-x فتحت هذه المشكلة في 13 يناير 2012

لقد مرت ما يقرب من 5 سنوات منذ الإبلاغ عن ذلك.

حتى شخص ما قام بالفعل بالكثير من التنفيذ

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

هل تعلم ما إذا تمت إضافة هذه الوظائف إلى الإصدارات الأخيرة من pdf.js؟

رد: https://github.com/mozilla/pdf.js/issues/7613#issuecomment -251692825

تعد التوقيعات في ملفات PDF موضوعًا كبيرًا ومعقدًا ، وهو موضوع متعامد إلى حد ما مع تنفيذ دعم AcroForm الأساسي (وهو ما تتبعه هذه المشكلة بالذات).

المشكلة الحالية هي مجرد مشكلة تتبع لتنفيذ ميزات AcroForm الأساسية ، وقد تم بالفعل تعقب التوقيعات في مكان آخر (في # 1076 ، حيث يجب مناقشة هذه الميزة).

lexcorp يرجى الامتناع عن نشر معلومات غير ذات صلة و / أو طرح أسئلة هنا ، لأنها تنتقص من الغرض من هذه المشكلة (وهو تتبع دعم ميزات AcroForm الأساسية).
أيضًا ، لقد قمت الآن بنشر نفس المعلومات بشكل أساسي في _ ثلاث_ إصدارات مختلفة ، يرجى عدم إرسال بريد عشوائي إلى متعقب المشكلة بهذه الطريقة!

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

anujgeek كما ذكرت بالفعل في https://github.com/mozilla/pdf.js/issues/7613#issuecomment -251699579 ، هذه مشكلة _tracking_ وليست حقًا مكانًا جيدًا لهذا النوع من المناقشة العامة و / أو طرح الأسئلة!

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

لاحظ أيضًا أنه حتى الآن تم إنجاز جميع الأعمال من قبل المساهمين ، وبالنظر إلى أن Mozilla تحل محل PDF.js في Firefox (راجع https://wiki.mozilla.org/Mortar_Project) ، من المرجح أن يستغرق دعم النماذج بعض الوقت.

هذه مشكلة تتبع (راجع https://github.com/mozilla/pdf.js/issues/7613#issuecomment-251895091) ، لذلك ليس هذا مكانًا للمناقشة أو الأسئلة. اتصل بنا على IRC في حالة وجود أسئلة أو تقديم مشكلة منفصلة إذا وجدت خطأ. شكرا.

_ (أقوم بإلغاء قفل المحادثة لأتمكن من السماح للمستخدمين باستخدام زر رد الفعل لقياس مدى الاهتمام بهذه الميزة ، ولكن ستتم إزالة التعليقات غير ذات الصلة.) _

مرحبا سويا!

ما هو التقدم في تعبئة AcroForm؟
المثال المستخدم https://www.irs.gov/pub/irs-pdf/f1040.pdf (وغيره) لا يزال لا يعمل. أم أنه لم يتم تكوينه بشكل افتراضي؟
بعض JavaScript الأساسية مثل تعيين الحقول ، مسح الحقول ، إرسال دعم الزر المذكور؟

شكرا.

@ Alex-DE-74 يرجى قراءة التعليقات الواردة أعلاه بعناية ، ولا سيما https://github.com/mozilla/pdf.js/issues/7613#issuecomment -251895091 و https://github.com/mozilla/pdf. js / issues / 7613 # issuecomment -287907674 ذات صلة.
علاوة على ذلك ، لقد طرحت هذه الأسئلة بالفعل في الرقم 9261 (حيث تم توفير الإجابات) ؛ من فضلك دعنا نحاول إبقاء مشكلة التتبع هذه خالية من هذا النوع من المناقشة العامة.

تضمين التغريدة

معذرةً ، لكن بالنسبة لي لا يمكن تتبعها حقًا من خلال العديد من الموضوعات ، أي عنصر يحتوي على أي مرحلة. والمراجع الدورية ليست مفيدة على الإطلاق. من نقطة https://github.com/mozilla/pdf.js/projects/1 ، من الواضح بالنسبة لي ، أي قطعة من AcroForms مدعومة الآن (تمامًا) وما هو مخطط. علاوة على ذلك ، تتناول العديد من الموضوعات إعادة / عرض ، ولكن لا توجد كلمات حول ملء / فحص / تحديد / إرسال وما إلى ذلك الميزة التفاعلية. لذلك ، على سبيل المثال ، جزء "أدوات النص" أعلاه لا يحتوي على أي شيء عن "كتابة النص". من ، إذا لم يتم تحليل "قاموس AcroForm" على الإطلاق ، فكيف يمكن أن يعمل بشكل جيد؟
ربما إذا كان من المفيد "للمستخدمين" أن يروا جدولًا بسيطًا حيث يتميز AcroForm بخصائصهم وحالة الدعم الكامل / المحدد / المخطط المُدرج. (لماذا هذا يظهر جريئة = ؟!)

ملاحظة: إنه أمر مؤلم بالنسبة لي ، فأنا لست خبيرًا في JS / HTML5 ، لكنني فعلت الكثير من الأشياء على الموقع الآخر (إنشاء PDF باستخدام C #) ولغات البرمجة الأخرى المألوفة أيضًا. هل يستحق الأمر بالنسبة لي محاولة فهم الكود الحالي من أجل تقديم المزيد من الدعم التفاعلي والمساعدة في تطوير هذا المشروع؟ أم أن هذا سيستغرق وقتًا طويلاً فقط لفهم الهندسة المعمارية الحالية؟

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

راجع للشغل: Chrome غير قادر أيضًا على حفظ ملفات PDF بالنماذج ، ولكن هناك حل بديل. يتم تقديم النماذج بشكل افتراضي ويمكن للمرء طباعتها ويمكن للمرء حتى طباعتها كملف PDF افتراضيًا ، بما في ذلك إدخال النموذج.

ربما هذا ينطبق على pdf.js أيضًا ويمكننا فقط استخدام ملف FF الحالي كملف PDF (https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/saveAsPDF)؟

أنا ألعب مع pdf.js في محاولة لطباعة قيم حقل نصي تم إدخاله. لدي دليل عملي أولي على المفهوم حيث يمكنني تقديم القيم المدخلة إلى ملف PDF المطبوع. أريد الآن أن أتحدث عن أسلوبي وأرى ما إذا كان هناك من يأتي بنهج أفضل أو أبسط.

في طريقي ، قمت بتمرير القيم المدخلة إلى مهمة العامل عن طريق إضافة خريطة إلى المهمة. هذه الخريطة مملوءة حاليًا في حدث "قبل الطباعة".
في قائمة "getOperatorList" الخاصة بـ "TextWidgetAnnotation" ، قرأت تدفق الكائن واستبدلت القيمة النصية القديمة لعامل التشغيل "Tj" بالقيمة الجديدة. هذا يعمل ، ولكن هناك الكثير من المشاكل القادمة. الأول ، أنه يفشل ، إذا كان الدفق لا يحتوي على عامل تشغيل "Tj" لأن الحقل ليس له قيمة. والثاني هو أن موضع المحاذاة بخلاف "اليسار" سيكون خاطئًا.
لذا فإن الفكرة التالية هي إنشاء دفق جديد تمامًا بحساب جميع القيم بنفسي. سيكون هذا كثيرًا من العمل ، لذلك أردت مناقشة هذا النهج أولاً.
يمكنني بالفعل إنشاء دفق جديد وعرض القيم ، ولكن مرة أخرى ، هناك مشكلة في قيم الإزاحة لعملية "Td". لقد بحثت في الكود قليلاً وأعتقد أنني بحاجة إلى حساب موضع الإزاحة X و Y من خلال مراعاة عرض وارتفاع السلسلة مع الخط المحدد. لقد وجدت FontDescriptor لخط واحد مضمن ، ولكن ليس لخط النظام. باستخدام واصف الخط ، لدي قيمة الصعود والنزول للخط ، والتي أعتقد أنه يمكنني من خلالها حساب إزاحة y سيتم إصلاح إزاحة x للنصوص المحاذية لليسار ، ولكن يجب حسابها للنصوص المحاذية إلى اليمين أو الوسط . أعتقد أنني قادر على القيام بذلك باستخدام مجموعة عروض Font xRef ، ولكن مرة أخرى ، لا يوجد مثل هذا لخطوط النظام. لذلك أعتقد أنني سأضطر إلى استخدام قماش وطريقة MeasText.

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

منذ بعض الوقت ، أجرينا مناقشة حول كيفية التعامل مع هذا الأمر. راجع https://mozilla.logbot.info/pdfjs/20161219. تكمن الفكرة في وجود قائمتين مختلفتين للمشغلين: واحدة لواجهة المستخدم والأخرى للطباعة. في عملية الطباعة ، سنستبدل العمليات بناءً على القيمة المدخلة / المحددة في الأداة.

أعتقد أن هذا أسهل إلى حد ما مما تصفه لأننا نترك المنطق المتبقي يقوم بالأعباء الثقيلة بالنسبة لنا ؛ علينا فقط تقديم قائمة المشغل الصحيحة.

هذه مشكلة يتعين علينا حلها في عدة خطوات صغيرة. تتمثل الخطوة الأولى في جعل رمز التعليق التوضيحي غير متزامن ، ويتم ذلك بواسطة dmitryskey في # 9822. ستكون الخطوة التالية هي تحليل قاموس AcroForm على سبيل المثال ، الخطوط وتحليل إدخال المظهر الافتراضي في قاموس التعليقات التوضيحية لجميع معلومات المظهر. لهذا يمكننا على الأرجح استخدام المقيم للحصول على المعلومات كقائمة عوامل تشغيل ، والتي تتطلب أن يكون رمز التعليق التوضيحي غير متزامن. بعد ذلك ، يمكننا إنشاء قوائم مشغلي الطباعة لكل نوع من أنواع التعليقات التوضيحية.

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

على الرغم من أن Opera / Chrome يستخدمان pdf.js أيضًا ، لكن Opera قادر على طباعة واستخدام البيانات النموذجية. ربما هناك شيء. يمكننا إعادة؟

يستخدمون PDFium ، وهو رمز C ++ بشكل أساسي.

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

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

الإغلاق منذ أن تم الآن دعم AcroForm وتمكينه. يتم الآن حفظ المشكلات المتبقية في إصدارات فردية وتجميعها باستخدام علامة 4-form-acroform ؛ راجع https://github.com/mozilla/pdf.js/labels/4-form-acroform.

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