分享一个Qt的pdf查看器
程序员文章站
2022-04-19 20:55:55
...
使用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