...或者就像我们使用poppler为Sailfish OS编写应用程序试点时一样。
这一年始于一项艰巨的任务-在短时间内,我们的团队需要在Sailfish OS上组装Mobile Manager Workplace应用程序的飞行员。 本质上,这是EDMS移动客户端,即 它旨在处理文档。 当然,需要使用pdf阅读器来处理文档。 但是事实证明,使其平稳运行并非易事。 但是我们可以说我们做到了(当然是针对原型)。 怎么了 阅读下切。
从好的方面来说,我可以说操作系统中内置的pdf阅读器非常棒,您无需单独组装它。 而“ Aurora”(这似乎是未来的“俄罗斯”名称,其发音不容置疑的“ Sailfish Mobile OS Rus”)可以为此夸耀,为此,我要多亏了。 但是,编写快速解决方案并不是那么简单。
Poppler是Sailfish中内置的
pdf渲染库 ,这就是为什么它被选作我们的黑暗用途的原因。 但是仅用于编写原型,因为GPL许可证将来不允许在其上发布商业产品。 并且,经过一番摸索,我得出的结论是,可能有更方便的解决方案,但稍后会介绍更多。
我想主要讲述我遇到的两个主要问题,试图在短时间内从poppler中挤出至少一些东西。 我建议观看一段演示该应用程序操作的视频,该视频在阅读我的before琐内容之前就出现了。
问题一
看到漂亮的旋转木马吗? 这种方式在文件夹中显示文档-对用户而言直观而简单,允许您在直接继续阅读文档并达成协议之前快速查看文档及其详细信息。 有必要让重要的部长签署非常重要的文件后,可以使用PathView使他们高兴。
PathView-一个很棒的工具,您可以做很多各种各样的事情。 但是我们的问题是代表。
使用poppler在线绘制文档的第一页(在主屏幕上预览文档)是一个不错的主意,因为没有缓存文件夹,并且文件夹之间的过渡开始令人难以置信地挂起,poppler绘制缓慢。 更确切地说,渲染器当然会绘制QPainter。
解决问题的方法很简单,但一点也不优雅:我们在启动应用程序时渲染预览,将图片保存到设备中,结果,通过委托中的QImage进行绘制。 而且,坦率地说,我还没有想出如何以更优雅的方式重写它。
问题二
如果您尝试一次绘制一个大文档(显示文档内容的页面),则不仅要花很长时间,而且还会弄脏图片。 我以为我弄乱了将文档渲染成小图片的尺寸,然后将其拉伸到给定的大小,但是不,我检查了所有内容100次。 我试图拍出更大的图片-都一样。 而且它不会像质量下降那样涂抹,而是好像它们已经通过新鲜墨水传递过一样。
当然,这可以一举解决,您不需要绘制整个文档,而只需绘制当前页面和相邻页面即可,但还没有时间来绘制。
总结
Poppler既缓慢又怪异,但感谢您有一个。 现在,我们想在试验中实现图形和文本pdf注释,因此我将把整个内容重写
到另一个库中 ,乍一看这是非常强大的功能,我希望声明的功能与现实相匹配。
如果有人尝试过或知道更合适的解决方案,我将不胜感激。