القصة المأساوية التي يرجع تاريخها poppler

... أو كما كتبنا التطبيق التجريبي لنظام التشغيل Sailfish باستخدام poppler.

بدأ العام بمهمة مسلية - في وقت قصير احتاج فريقنا إلى تجميع تجربة تطبيق Mobile Manager Workplace على Sailfish OS. في جوهرها ، هذا هو عميل EDMS للهواتف المحمولة ، أي وهي مصممة للعمل مع الوثائق. وبالطبع ، مطلوب قارئ قوات الدفاع الشعبي للعمل مع الوثائق. لكن اتضح أن جعلها تعمل بسلاسة لم تكن بهذه السهولة. ولكن يمكننا القول أننا فعلنا ذلك (للنموذج الأولي ، بالطبع). كيف؟ قراءة تحت الخفض.

الصورة

من الجيد ، أستطيع أن أقول إن قارئ PDF المدمج في نظام التشغيل رائع ، لا تحتاج إلى تجميعه بشكل منفصل. و "Aurora" (يبدو أن هذا هو الاسم "الروسي" في المستقبل "Sailfish Mobile OS Rus" الذي لا يمكن التنبؤ به) يمكن أن يتباهى بهذا ، والذي بفضله كثيرًا. ولكن لا يزال ، كتابة حل سريع لم يكن بهذه البساطة.

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

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


المشكلة رقم واحد


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

PathView - أداة رائعة ، يمكنك القيام بمجموعة من جميع أنواع الجمال. لكن مشكلتنا هي المندوب.

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

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

المشكلة رقم اثنين


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

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

ملخص


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

إذا حاول أي شخص أو يعرف حلاً أكثر ملاءمة ، فسأكون في غاية الامتنان للنصيحة.

Source: https://habr.com/ru/post/ar440864/


All Articles