首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分享一个Qt的pdf查看器

分享一个Qt的pdf查看器

作者头像
Qt君
发布2019-10-09 16:19:11
1.8K0
发布2019-10-09 16:19:11
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程

使用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
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何编译
  • 如何使用
  • 源码地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档