... oder wie wir den Anwendungspiloten für das Sailfish OS mit Poppler geschrieben haben.
Das Jahr begann mit einer amüsanten Aufgabe - in kurzer Zeit musste unser Team einen Piloten der Mobile Manager Workplace-Anwendung auf dem Sailfish-Betriebssystem zusammenstellen. Im Wesentlichen ist dies ein mobiler EDMS-Client, d.h. Es wurde entwickelt, um mit Dokumenten zu arbeiten. Und natürlich ist ein PDF-Reader erforderlich, um mit Dokumenten arbeiten zu können. Es stellte sich jedoch heraus, dass es nicht so einfach war, reibungslos zu funktionieren. Aber wir können sagen, dass wir es geschafft haben (für den Prototyp natürlich). Wie? Lesen Sie unter dem Schnitt.
Aus dem Guten kann ich sagen, dass der in das Betriebssystem integrierte PDF-Reader einfach großartig ist, Sie müssen ihn nicht separat zusammenbauen. Und „Aurora“ (es scheint, dass dies der zukünftige „russische“ Name für das unaussprechliche „Sailfish Mobile OS Rus“ ist) kann sich dessen rühmen, wofür viele danken. Trotzdem war es nicht so einfach, eine schnelle Lösung zu schreiben.
Poppler ist eine in Sailfish integrierte
PDF-Rendering-Bibliothek , weshalb sie für unsere dunklen Zwecke ausgewählt wurde. Aber nur zum Schreiben eines Prototyps, da die GPL-Lizenz es in Zukunft nicht mehr erlaubt, ein kommerzielles Produkt darauf zu veröffentlichen. Und nachdem ich es ein wenig berührt habe, komme ich zu dem Schluss, dass es wahrscheinlich bequemere Lösungen gibt, aber dazu später mehr.
Ich möchte hauptsächlich über die beiden Hauptprobleme berichten, auf die ich gestoßen bin, indem ich versucht habe, in kurzer Zeit zumindest etwas aus dem Poppler herauszuholen. Ich schlage vor, ein Video anzusehen, das die Funktionsweise der Anwendung demonstriert und sich vor dem Lesen meines Nörgelns herausstellte.
Problem Nummer eins
Sehen Sie ein hübsches Karussell? Auf diese Weise können Dokumente in Ordnern angezeigt werden - intuitiv und einfach für den Benutzer. Sie können Dokumente und Details schnell anzeigen, bevor Sie direkt mit dem Lesen des Dokuments und dem Zustimmen fortfahren. Es wird benötigt, damit wichtige Minister, die ihre sehr wichtigen Dokumente unterschreiben, ihre Augen mit PathView erfreuen können.
PathView - ein wunderbares Werkzeug, mit dem Sie eine Menge aller Arten von Schönheit machen können. Aber unser Problem ist der Delegierte.
Das Zeichnen der ersten Seite eines Dokuments (Vorschau eines Dokuments auf dem Hauptbildschirm) online mit Poppler ist eine gute Idee, da Ordner nicht zwischengespeichert werden und der Übergang zwischen ihnen unglaublich hängen bleibt. Poppler zeichnet langsam. Genauer gesagt zeichnet Rendering natürlich QPainter.
Das Problem wird einfach, aber überhaupt nicht elegant gelöst: Wir rendern die Vorschau beim Start der Anwendung, speichern das Bild auf dem Gerät und zeichnen als Ergebnis QImage im Delegaten. Und ehrlich gesagt habe ich noch nicht herausgefunden, wie ich dies auf elegantere Weise umschreiben kann.
Problem Nummer zwei
Wenn Sie versuchen, ein großes Dokument auf einmal zu zeichnen (eine Seite, auf der der Inhalt des Dokuments angezeigt wird), geschieht dies nicht nur sehr lange, sondern verschmiert auch das Bild. Ich dachte, ich hätte die Abmessungen, mit denen das Dokument in ein kleines Bild gerendert wird, durcheinander gebracht, und dann wird es auf eine bestimmte Größe gedehnt, aber nein, ich habe alles 100 Mal überprüft. Ich habe versucht, ein größeres Bild zu machen - trotzdem. Und es schmiert nicht wie bei einem Qualitätsverlust, sondern als hätten sie eine Hand durch frische Tinte geführt.
Dies kann natürlich auf einen Schlag gelöst werden. Sie müssen nicht das gesamte Dokument zeichnen, sondern nur die aktuelle Seite und die benachbarten, hatten aber noch keine Zeit dafür.
Zusammenfassung
Poppler ist langsam und komisch, aber danke, dass du einen hast. Jetzt möchten wir grafische und textuelle PDF-Anmerkungen im Pilotprojekt implementieren. Daher werde ich das Ganze
in eine andere Bibliothek umschreiben. Dies ist auf den ersten Blick unglaublich leistungsfähig. Ich hoffe, dass die deklarierte Funktionalität der Realität entspricht.
Wenn jemand eine geeignetere Lösung ausprobiert hat oder kennt, bin ich für den Rat sehr dankbar.