Pdf.js: استخدم المزيد من التكبير الطبيعي على الهاتف المحمول

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

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

1-viewer 2-feature

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

ltullman @ hetalv985 تمكنت من جعله يعمل بنفسي ، تحقق من جوهر بلدي هنا:

https://gist.github.com/squallstar/1d720e93eabe7f60dc61b547d2c19228
ببساطة الصق ذلك في نهاية viewer.html 👍 هذا كل شيء.

ال 95 كومينتر

هذا ما أردنا القيام به ، ولكن بالنسبة إلى V1 ، كانت القرص للتكبير تواجه مشكلات ، لذا كان علينا استخدام أزرار التكبير / التصغير.

هل يمكنك توضيح القضايا؟ أعتقد أنه يمكننا على الأرجح ترتيب أولوياتك من أجل جعل PDF.js يعمل بشكل جيد.

لا أعتقد حقًا أنك تريد أن يقوم المتصفح بالتكبير في هذه الحالة. إذا عرض pdf.js مستندًا بحجم 800 × 600 ، وقمت بقرص التكبير ، فسيستمر المتصفح في عرض محتوى 800 × 600 بدقة أعلى جديدة والتي قد تبدو أو لا تبدو هراء اعتمادًا على دقة الجهاز وكيف لقد قمت بالتكبير. (أفترض أن pdf.js لا يزال يستخدم قماشًا للعرض وليس svg؟)

Snuffleupagustimvandermeij هل أي من كنت ترغب في العمل على ذلك؟ يبدو أنه لا ينبغي أن يكون من الصعب للغاية استخدام المكتبة المشتركة في Gaia https://github.com/mozilla-b2g/gaia/blob/master/shared/js/gesture_detector.js

brendandahl سأضعه بالتأكيد في قائمة https://github.com/mozilla-b2g/gaia/blob/862de8489b648a9af7e8a5b88be031b5479404ba/apps/camera/js/panzoom.js#L15 مثال جيد ، حيث يتم استخدام "التحويل" لأحداث القرص بإصبعين. سيكون أمرًا رائعًا حقًا أن يعمل القرص للتكبير ، حيث يتم استخدامه كثيرًا على الهاتف المحمول.

أنا أعمل على هذا. يمكن للمستخدمين المهتمين مراقبة https://github.com/timvandermeij/pdf.js/tree/pinch-to-zoom من أجل التقدم. إنه يلتقط بالفعل أمر القرص للتكبير على جهازي اللوحي والهاتف ، ولكن يجب تحسين الدقة ، بالإضافة إلى إعادة العرض الفعلية (سأحتاج إلى إيجاد طريقة لحساب المقياس الجديد باستخدام المقياس القديم والنقطة الوسطى الجديدة ، أو بطريقة أخرى).

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

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

لقد حققت بعض النجاح مع hammer.js. لقد سمحت بقرصة المتصفح "الأصلية" (والتي تؤدي إلى ملف PDF ضبابي) وعند الضغط أعيد رسم لوحة PDF باستخدام scale = scale * zoom وأعطي اللوحة القماشية css "transform: scale (1 / zoom)". لذلك سيكون كل شيء في نفس المكان (خاصة النصوص والمراسي). تبدو أنيقة.

skruse لقد أعددت تصحيحًا لتنفيذ القرص للتكبير منذ فترة (انظر # 3708) ، أيضًا باستخدام Hammer.js ، لكنني لم أنجح بعد في جعله يعمل بشكل صحيح على الأجهزة المحمولة / اللوحية. تسببت حركات القرص في الكثير من مشاكل الأداء والاستقرار. هل تمانع في مشاركة تنفيذك معنا؟ إذا لم يكن الأمر كذلك ، فهل يمكنك إنشاء طلب سحب بقرصة لتكبير التنفيذ؟ ربما يمكن أن يحل محل لي إذا كان يعمل بطلاقة أكثر على الأجهزة المحمولة / الأجهزة اللوحية. :)

مرحبًا skruse ، كيف تمكنت من حساب نسبة التكبير / التصغير في نهاية التكبير / التصغير؟

var zoom = document.documentElement.clientWidth / window.innerWidth ؛

ولدي أيضًا مشكلات في الأداء: لا ينبغي لأحد التكبير "بعيدًا جدًا" على جهاز محمول ، من حيث معلمة "المقياس". أعتقد أن 2 أو 3 هي الحد الأقصى.

+2 لهذا

شخص ما حصل على حل لهذه المشكلة البالغة من العمر عامين؟

لم يتم فعل أي شيء حيال ذلك على حد علمي. أشير إلى تعليقي السابق في https://github.com/mozilla/pdf.js/issues/2582#issuecomment -30316908. ندعو أي شخص لتقديم تصريح إقامة خاص بهذا بمجرد وجود رمز العمل.

أحب أن أرى حلاً لهذا. في الوقت الحالي ، هذا هو الشيء الوحيد الذي يمنعني من استخدام pdf.js

:(

قرصة التكبير سيكون رائعًا! لقد وجدت هذا المكون الإضافي jquery الذي يستخدم pdf.js وله صفحات تكبير وتصغير سريعة. http://touchpdf.net/demo/index.htm ولكن سيكون من الجيد إذا تم إنشاؤه في pdf.js من البداية :-)

+1 أود رؤية هذا هنا.

+1 ، هل سيكون المثال في أي مكان آخر يستخدم hammer.js لالتقاط الحدث ثم استدعاء وظائف التكبير / التصغير بتنسيق pdf.js ليس طريقة "نظيفة" نسبيًا؟

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

rorysmorris كيف تمكنت من التغلب على تعطيل تكبير المتصفح الأصلي عند القرص أثناء التمرير؟ لقد قمت أيضًا بتطبيق hammer.js على pdf.js ولكن لا يمكنني التغلب على هذه المشكلة بالذات

هل حاولت استخدام خاصية touch-action CSS؟
https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action

في 5 تشرين الأول (أكتوبر) 2016 ، الساعة 3:15 مساءً ، كتب "toplay3" [email protected] :

rorysmorris https://github.com/rorysmorris كيف تمكنت من الحصول عليها
حول تعطيل تكبير المتصفح الأصلي عند القرص أثناء التمرير؟ عندي
قام أيضًا بتنفيذ hammer.js على pdf.js ولكن لا يمكنه الالتفاف على هذا بالتحديد
القضية

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

@ روب - دبليو
يا عبقري! يعمل بشكل مثالي الآن! شكرا جزيلا!

متى يتم التخطيط لتنفيذ هذه المشكلة؟ لقد مر بعض الوقت منذ أن تم نشر هذه المشكلة في الأصل. وغني عن القول +1!

أتحقق أيضًا من هذه المشكلة كل أسبوع منذ عام الآن. سيكون من الرائع أن يكون في جوهره أو كملحق بمطرقة js.

لكي تكون أكثر إيجابية في هذا الموضوع ، إليك متطلبات واجهة المستخدم (إذا أراد شخص ما المساعدة حقًا في حل المشكلة وتسريع حلها) ولا يوجد شيء محدد لـ PDF.js:

  • لتكبير وتصغير مجموعة DIVs (بأحجام مختلفة) المكدسة عموديًا
  • عدم السماح للمستخدم بالضياع في منفذ العرض بمقاييس مختلفة
  • الكشف والإبلاغ عند تغير رؤية div أو تغيير المقياس المرئي.

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

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

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

من خلال استقصائي الموجز ، وجدت أنه لا توجد طريقة عبر المتصفح لدعم إيماءات التكبير / التصغير حتى الآن.

+1

@ toplay3 و @ Rob - W ماذا فعلت

مرحبًا بالجميع ، مثل معظمكم ، أنا مهتم بالحصول على ضغط للتكبير ، هل كان أي شخص قادرًا على القيام بذلك ، حتى باستخدام libs الخارجية مثل المطرقة؟ إذا قمت بذلك ، فما هو الإعداد؟ rorysmorris @ toplay3 @ روب - شكرا W

👍

rorysmorris أي نصيحة حول السؤال أعلاه؟ شكر :)

مرحبًا squallstar - في البداية حاولت استخدام مكتبة JS للتصغير والتكبير للتعامل مع هذا الأمر من أجلي ، لكنني وجدت بعض المشكلات. لم يقم بتكبير الصورة بالطريقة التي أريدها ، أي أنه سيسمح لخلفية PDF بالخروج تمامًا من الشاشة ، عندما لم أرغب أبدًا في أن تكون الحواف بعيدة عن حافة الشاشة ، إذا كان ذلك منطقيًا. في النهاية ، لقد استخدمت للتو التكبير الأصلي المدمج في متصفح الجوال للقرص / التكبير / التنقل. لقد قمت بإعداد PDF.js لعرض ملف PDF بحجم 3 أضعاف حجم البكسل الذي تم عرضه ، ثم تم تصغيره باستخدام CSS ، لذلك سيظل هشًا إلى حد ما عند التكبير. إذا كنت بحاجة إلى أي مساعدة ، يمكنني أن أعرض لك مثالاً عمليًا عن التنفيذ.

شكرًا rorysmorris ، سيكون رائعًا إذا عرضت لي (أو أرسلت مقتطفًا) أو كيف نفذته. مقدر جدا 👍

squallstar ، أرسل لي بريدًا إلكترونيًا من خلال نموذج الاتصال على موقعي وسأرسل لك عرضًا توضيحيًا لاحقًا اليوم :) http://rorymorris.co.uk

squallstar هذا ليس حلاً حقًا ولكنه نوع من الحل. العيوب هي: الأداء ، والنتيجة تعتمد على الأجهزة ، والتكبير ليس بلا حدود.

تم تحسين الأداء تضمين التغريدة

كان الأداء أكثر تخمينًا. لنفترض استخدام iPhone Plus في عرض أفقي @ 2208 بكسل. الآن سيكون لديك لوحة قماشية مقاس 6624 بكسل. بناءً على تعقيد ملف PDF وعدد الصفحات ، قد يكون لديك 3 لوحات مطبوعة بحجم 6000 بكسل مع نص HTML ورسومات وما إلى ذلك.

أعتقد أن حلك رائع لكثير من الناس. ولكن كما وصفت ، فإن التكبير / التصغير المزيف أكثر من أنه يؤدي في الواقع إلى تشغيل تكبير PDF.js وإعادة عرضه :)

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

قد يتسبب PDF.js في تعطل المتصفح (iOS Safari) في حوالي 10 صفحات PDF مقدمة ، لذلك في النهاية كان علي فقط إظهار صفحة PDF واحدة في كل مرة مع الأزرار السابقة / التالية. ليست مثالية! وأنا أوافق على أن وظيفة التكبير / التصغير الأصلية المضمنة في PDF.js ستكون أجمل كثيرًا.

الخروج من kamihq.com للعمل على سبيل المثال التكبير / التصغير

rorysmorris لقد أرسلت لك بريدي الإلكتروني مساء أمس من خلال نموذج الاتصال ، هل من الممكن أن ترسل لي المثال الذي كنت تتحدث عنه؟ :) شكر

هل يمكن لأي شخص لديه مثال عملي (

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

ltullman @ hetalv985 تمكنت من جعله يعمل بنفسي ، تحقق من جوهر بلدي هنا:

https://gist.github.com/squallstar/1d720e93eabe7f60dc61b547d2c19228
ببساطة الصق ذلك في نهاية viewer.html 👍 هذا كل شيء.

شكرا squallstar. لكننا لا نستخدم viewer.html. نحن نعرض ملف pdf في تطبيق iOS للجوال داخل علامة div. كيف نستخدم هذه الميزة في هذه الحالة؟ هل نحتاج إلى تضمين ملفات العارض؟

إذن لدينا الوظيفة handleMouseWheel وهي مشابهة جدًا. لماذا لا تستخدم نفس الوظيفة بالضبط مع إيماءة اللمس أو المطرقة js؟ أليس هذا ثابتا في 1-2 ساعة إذن؟

للأسف الأمر ليس بهذه السهولة. يرجى الرجوع إلى تعليقي السابق على https://github.com/mozilla/pdf.js/issues/2582#issuecomment -30316908. نحتاج إلى الحد من مقدار إيماءات اللمس حتى لا يتم إعادة عرض اللوحة القماشية عند كل تغيير في دلتا ، وهي مشكلة رئيسية في الأداء. إذا كان شخص ما على استعداد للعمل على هذا ، فلا تتردد في إرسال تصريح إقامة وسنراجعه.

إذا كانت هذه هي المشكلة الوحيدة ... :)

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

ستكون إضافة لطيفة إذا كان التكبير / التصغير والتكبير بالقرص سيستخدمان نفس الوظيفة.

التزامك يبدو جيدًا بالفعل. ربما لم يعد الأداء يمثل مشكلة ، فقد مضى أكثر من 3 سنوات. بالطبع سيكون الحل الأفضل هو: قرص البداية -> تكبير غير واضح -> قرصة النهاية -> تكبير pdf حقًا. أيضًا user-scalable=no لا يعمل على أحدث iOS بعد الآن. لذلك قد نضطر إلى preventDefault() أيضًا.

لقد استثمرت الكثير من الوقت في هذا. في الواقع يبدو الأمر ممكنًا ولكن هناك العديد من المشكلات التي لم أتمكن من حلها:

  • لا يعمل hammer.js إلا عند الضغط (يتم دائمًا إلغاء تحريك القرص عند تكبير pdf.js)
  • لم أتمكن من التمرير بشكل مثالي إلى مركز الضغط على الرغم من أنني استخدمت نفس الطريقة التي يستخدمها تكبير عجلة الماوس
  • في بعض الأحيان لا يتم ضبط المركز بشكل صحيح بواسطة hammer.js
  • في بعض الأحيان لا يتم استدعاء الضغط عن طريق hammer.js ولا يحدث تكبير
  • حاولت إضافة تحويل css على تحريك القرص (تكبير css عند تحريك القرص ، تكبير pdf js عند الضغط) مما سيعطي أداءً رائعًا ولكن مرة أخرى لم أتمكن من التمرير بشكل مثالي (موضع # viewer مع ترجمة css)
  • يمنع hammer.js أي إجراء لمس آخر (في حالتنا تمرير الصفحة العادية) لذلك اضطررت إلى تعديل hammer.js لمنعه فقط عند استخدام إصبعين
  • (نفس الشيء بالنسبة لتكبير عجلة الماوس :) إذا لم تكن هناك أشرطة تمرير (تم تصغيرها بحيث ترى المستند بالكامل) لا يمكننا وضع (التمرير) المستند إلى منتصف القرص.

من المحتمل أن كل هذا قابل للحل ، لكن iOS 10 يسمح بتكبير الصفحة حتى عندما يتم تعطيلها بـ user-scalable=no . لذلك عدة مرات عند الضغط على PreventionDefault () لا يعمل ويتم تكبير الصفحة بأكملها. قد يؤدي ذلك إلى مشكلة كبيرة للمستخدم النهائي (الطريقة الوحيدة للخروج هي النقر المزدوج على شريط الأدوات).

MickL لقد

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

أي تلميح حول مكان تطبيق تحولات مقياس CSS لتجنب عرض كل شيء على كل دلتا مقياس؟

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

squallstar لقد اختبرت الحل الخاص بك على iOS لفترة وجيزة جدًا. وحتى الآن ، إنه يعمل بالنسبة لي! شكرا لتقاسم الحل الخاص بك 💯

vuinguyen شكرا! أنا سعيد لأنها عملت معك أيضًا ؛)

+1

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

تم "كسر" التكبير / التصغير في نظام التشغيل iOS منذ نظام التشغيل iOS 10. حتى لو تم تنفيذ كل شيء بشكل مثالي ، فإن Safari سوف يفسد كل شيء.

هل هذه مشكلة خاصة بنظام iOS؟ هل من الممكن تكبير / تصغير ملف PDF يقدمه pdfjs على نظام Android؟

يعتمد على المتصفح. أفترض أن متصفحات iOS فقط هي التي تتجاهل "User-scalable = no".

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

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

أفترض أن متصفحات iOS فقط هي التي تتجاهل "User-scalable = no".

صيح.

لقد رأيت أن "Box Content Preview" (الذي يستخدم PDFJS لإظهار ملفات PDF) يقوم بتنفيذ جيد لذلك. هذا هو رمز المشاهد الخاص بهم:

https://codepen.io/box-platform/pen/rmZdjm

وهذا هو طلب السحب لإصلاحها:

https://github.com/box/box-content-preview/pull/567

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

@ amurillo17 شكرا على الرابط. يبدو حل Box رائعًا. أود أن أرى شيئًا كهذا يعمل مع ملفات pdfj. يرجى تبقينا تحديثها على التقدم المحرز الخاص بك!

هل يوجد حل جيد لهذه المشكلة؟

أي تحديثات لهذا؟ ستكون ميزة رائعة!

أي تحديثات؟ شكر

هل هناك أي طرق بسيطة لإضافة هذه الميزة إلى العارض الحالي؟

هل هناك أي طرق بسيطة لإضافة هذه الميزة إلى العارض الحالي؟

لا.

prohtex Hm ، هذا محزن جدًا. آمل أن تتم إضافة هذه الميزة قريبًا بعد كل هذه السنوات.

prohtex Hm ، هذا محزن جدًا. آمل أن تتم إضافة هذه الميزة قريبًا بعد كل هذه السنوات.

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

لدي حل بديل ، ولكنه "Android فقط" لأنني لا أهتم بنظام iOS في الملحق "Firefox for Android" الخاص بي:
https://github.com/M-Reimer/android-pdf-js/blob/master/patches/pdfjs-pinch-gestures.js
يقوم ملفي Makefile فقط بإلحاق هذا بـ "web / viewer.js". يسجل في أحداث اللمس ويترجم إيماءات القرص إلى نقرات الزر.

لدي حل بديل ، ولكنه "Android فقط" لأنني لا أهتم بنظام iOS في الملحق "Firefox for Android" الخاص بي:

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

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

بالنظر إلى الكود ، هذا ليس حلاً قابلاً للتطبيق أو حتى حلاً جيدًا. كل هذا يفعله هو مشاهدة أحداث التكبير / التصغير ومحاكاة النقر على أزرار [-] [+] باستخدام jQuery.

prohtex بالضبط. إذا جربته ، فإنه يفعل شيئًا ، لكنه لا يعمل بشكل جيد على الإطلاق.

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

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

يضرب الأزرار. "التكبير الطبيعي" غير ممكن باستخدام هذا الأسلوب البسيط ولا أريد العبث كثيرًا باستخدام PDF.js. هذا ليس هدف الملحق الخاص بي.

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

بالنظر إلى الكود ، هذا ليس حلاً قابلاً للتطبيق أو حتى حلاً جيدًا. كل هذا يفعله هو مشاهدة أحداث التكبير / التصغير ومحاكاة النقر على أزرار [-] [+] باستخدام jQuery.

أنا منفتح على الاقتراحات ، ولكن نظرًا لأن هذا جزء من الملحق الذي يريد فقط جعل PDF.js قابلاً للاستخدام كمشاهد PDF داخل Firefox ، فلن أقوم بإجراء تعديلات عميقة.

راجع للشغل: لا يوجد سطر واحد من jQuery في الكود الخاص بي. هذا هو جافا سكريبت خام.

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

راجع للشغل: لا يوجد سطر واحد من jQuery في الكود الخاص بي. هذا هو جافا سكريبت خام.

أنا أقف بشكل صحيح. على أمل حل ناضج قريبًا.

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

ملاحظة: استخدام jQuery داخل مشروع غير jQuery يبدو بالفعل ممارسة سيئة بالنسبة لي.

ملاحظة: استخدام jQuery داخل مشروع غير jQuery يبدو بالفعل ممارسة سيئة بالنسبة لي.

أين يستخدم @ M-Reimer JQuery؟ كما ذكر بالفعل ، فإن حله لا يستخدم سوى جافا سكريبت عادي.

نعم .. سيئتي. النقطة المهمة هي أن هذا الحل لا يعمل بشكل جيد.

تم التحديث بحيث تغير المسافة بين الأصابع مقدار التكبير:
https://github.com/M-Reimer/android-pdf-js/blob/master/patches/pdfjs-pinch-gestures.js
لا يمكن التكبير / التصغير أثناء تحريك الأصابع ، لأن التكبير / التصغير الفعلي وإعادة الرسم يتسببان في "إنهاء" حدث اللمس بطريقة ما.
مرة أخرى: أفضل من عدم التعامل مع الإيماءة على الإطلاق.

@ M-Reimer شكرا جزيلا لك على عملك. على الأقل ، إنه تحسن مقارنة بالإصدار الأخير. ربما يجد شخص ما حلاً لإعادة رسمه أثناء التكبير. أو قد يكون من الممكن التكبير مؤقتًا باستخدام تحويلات css ثم إعادة رسمها في النهاية بعد انتهاء إيماءة اللمس.

anvaka نظرنا في القضية ويبدو أنه قد يكون هناك حل بسيط إلى حد ما . لسوء الحظ ، ليس لدي الوقت الحالي لاختباره ، ولكن ربما يريد المرء تجربته.

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

https://gist.github.com/jsprpalm/12217feab2f1acc14”e8508291619e

ألا يوجد حتى الآن حل لهذه المشكلة؟ أرغب في استخدام pdf.js على الهاتف المحمول ولكن بدون القدرة على التكبير يكون في الغالب عديم الفائدة على الشاشات الأصغر.

لقد جعلته يعمل بدون استخدام hammer.js ولكن نظرًا لأنه كان لمشروع العملاء ، لا يمكنني مشاركة الكود. لقد قمت بتنفيذ القرص والقرص المزدوج والتكبير باستخدام css وعند الضغط قمت بتكبير / تصغير ملف pdf.js. تتطلب بعض العناصر ضبط العرض / الارتفاع ويمكن تحويل بعضها باستخدام تحويل css. أيضًا أثناء التكبير ، يجب منع مشاهدة التمرير لـ pdf.js viewer.js. استغرقت مني الكثير من الوقت لكنها عملت بشكل جيد في النهاية.

ألا يوجد حتى الآن حل لهذه المشكلة؟ أرغب في استخدام pdf.js على الهاتف المحمول ولكن بدون القدرة على التكبير يكون في الغالب عديم الفائدة على الشاشات الأصغر.

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

في ما يلي بيان عام يمكن دمجه دون صعوبة كبيرة:

https://github.com/box/box-content-preview/pull/567

https://gist.github.com/jsprpalm/12217feab2f1acc14”e8508291619e

jsprpalm ، شكرًا لك يعمل بشكل رائع يحتاج إلى إصلاح ، يرجى المساعدة في إصلاحه

aidrouge https://gist.github.com/larsneo/bb75616e9426ae589f50e8c8411020f6

لقد أضفت هذا إلى ملحق عارض PDF الخاص بي. يبدو أن تعمل بشكل جيد جدا.
https://addons.mozilla.org/android/addon/android-pdf-js/

تحرير: يعمل بالنسبة لي

بالنسبة لي ، أعمل على وضع طبيعي أكثر:

<meta
      name="viewport"
      content="width=device-width, initial-scale=1, maximum-scale=10.0, minimum-scale=1.0"
    />

كيف يمكنني ضبط الحد الأدنى للتكبير؟ يمكنني تصغير الصورة لدرجة أنها تتحول إلى نقطة.

لدي نفس السؤال مثلKazysNoobiys.
لا يؤثر المقياس الأدنى في منفذ العرض على التكبير / التصغير

أنا أعمل على حل آخر: طبقة css شفافة تتراكب pdf.js للتعامل مع وظائف التمرير المختلفة. يعمل جزء التراكب الآن ، لكنني لا أعرف الوظائف التي يجب الاتصال بها.
إذا (انتقد == 'يسار') ؟؟؟؟
ما الوظيفة التي سأطلبها للتقدم إلى الصفحة التالية أو النسخ الاحتياطي إلى الصفحة السابقة أو التكبير / التصغير؟

وفر وقتك وحياتك ، قم بتحرير ملف .html الخاص بك مثل هذا

// delete the 'maximum-scale'
<meta name="viewport" content="width=device-width, initial-scale=1">

على سبيل المثال https://github.com/mozilla/pdf.js/blob/master/web/viewer.html#L26

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

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

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

smit-modi picture smit-modi  ·  3تعليقات

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

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

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