专栏首页跟Qt君学编程分享一个Qt的pdf查看器

分享一个Qt的pdf查看器

使用Qt的WebEngine和javascript的pdf.js模块构建的PDF查看器。

  这个基于qmake的项目定义了两个构建目标:qpdf共享库(ppdflib)和pdfviewer基于qpdf库的示例PDF查看器。

如何编译

  • 仅支持Qt 5.9.x或更高版本;
  • qpdf.pro在QtCreator中打开项目文件;
  • 构建并运行。

如何使用

  qpdfli库提供了两种打开PDF文件的方式:

QPdfWidget::loadData(const QByteArray &pdfData);
QPdfWidget::loadFile(const QString &filePath);

loadData方法将PDF数据序列化为base64字符串,并将其注入JavaScript环境。注意:在加载巨大的PDF文件时,这可能会失败。

loadFile可以加载任何大小的PDF,但是由于跨域安全限制,默认情况下该方法被阻止,因为它使用WebEngine的加载URL方法。为了使此方法有效,您必须通过将–disable-web-security参数传递给QApplication实例来禁用Web安全性(请参阅pdfviwer示例中的操作)。

int main(int argc, char **argv)
{
#ifdef QPDF_WIDGET_USE_CORS
    // Disable web security when using cross-origin URL fetch.

    int nargs = argc + 1;
    char** args = new char*[nargs];
    for (int i = 0; i < argc; i++) {
        args[i] = argv[i];
    }
    args[argc] = (char*)"--disable-web-security";

    QApplication app(nargs, args);
#else
    QApplication app(argc, argv);
#endif

	...
}

源码地址

https://github.com/Archie3d/qpdf

本文分享自微信公众号 - Qt君(qtjuna)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C/C++趋向运算符

    Qt君
  • Qt官方示例-正则测试工具

      QRegularExpression实现与Perl兼容的正则表达式,支持许多高级匹配功能,例如不区分大小写的匹配,多行匹配,Unicode属性选择器和模糊匹...

    Qt君
  • Flat风格的Qml滚动选择条

    Qt君
  • 干货分享 | 详解特征工程与推荐系统及其实践(附PPT)

    云脑科技机器学习训练营11月13日正式开始啦!量子位作为合作媒体独家为大家分享课程干货内容。 本期内容简介 主题:亿级用户电商平台推荐系统挑战 主讲人:张本宇(...

    量子位
  • 勒索软件Cryptolocker最新变种感染群晖NAS网络存储设备

    2014年肆虐互联网的勒索软件Cryptolocker变种正如雨后春笋般涌现。现在,Cryptolocker开始向群晖(Synology)网络存储器设备(NAS...

    安恒信息
  • 在软件测试中UT,IT,ST,UAT分别是什么意思

    UT(Unit Test)即软件测试分类中的单bai元测试,它是对程序du中的最小可测单元zhi进行测试,一般理解的单元测试就是针dao对代码的测试,通常采用一...

    用户7557625
  • BZOJ1211: [HNOI2004]树的计数(prufer序列)

    Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2987  Solved: 1111 Description ...

    attack
  • 人脸识别完整项目实战(14):实时人脸特征点标定程序设计

    本文是《人脸识别完整项目实战》系列博文第14章《实时人脸特征点标定程序设计》,本章内容详细介绍Win10 环境下,基于Visual Studio 2015 + ...

    数据饕餮
  • 优秀的技术选型(摘选)

    老梁
  • Stacking:Catboost、Xgboost、LightGBM、Adaboost、RF etc

    提供了5万多名用户在境外旅行APP(黄包车)中的浏览行为记录和历史订单记录(具体数据和字段如下五张表所示),其中用户在浏览APP之后有三种可能,购买精品旅游服务...

    机器学习AI算法工程

扫码关注云+社区

领取腾讯云代金券