Qt应用程序中我们会处理一些数据,得到一些结果,为了使结果显而易见,我们通常希望把结果以一定的格式打印出来。最开始想到的就是打印成PDF格式,毕竟PDF的可移植性好,而且打印结果不容易被他人修改。
搜索了一些资料后,发现了两个开源库limereport和KDReport比较好用。仔细研究了limereport的例子后发现,limereport主要是用于数据显示,不能在其中插入描述文本,一定格式的图片等,所以最后选择放弃。选定KDReport。
编译KDReport
KDReprot依赖KDChart,所以我们首先编译KDChart。
在GitHub官网上下载KDChart最新的Release版本,解压下载后的文件使用CMake构建Visual Studio项目,然后编译。
然后下载KDReport最新的Release版本,解压下载后的文件,使用CMake构建Visual Studio项目。
注意这里可能会出现一些错误。
- 需要配置正确的KDChart编译库路径(KDChart_DIR)。
- 设置CMAKE_BUILD_TYPE(STRING, 默认设置位Debug)。
- 添加CMAKE_INSTALL_PREFIX字段,用于设置编译后的安装目录。
- 特别注意:KDReport的CMakeLists.txt少了Network模块的链接,可能会生成错误,需要在KDReport根目录的CMakeList.txt添加上Qt5::Network的,添加后内容如下。(编译版本:KDReport 2.0.0)
set(Qt_VERSION_MAJOR 5)
set(QT_MIN_VERSION 5.9.0)
find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Core Widgets PrintSupport Xml Network)
list(APPEND QT_LIBRARIES Qt5::Core Qt5::Widgets Qt5::PrintSupport Qt5::Xml Qt5::Network)
set(${PROJECT_NAME}_LIBRARY_QTID "")
编译完成后,下面我们运行一个KDReport的例子,验证下编译是否完全正确。首先将KDChart编译生成的DLL拷贝到当前运行目录,然后双击HelloWorld.exe,运行结果如下。说明一切运行正确。
利用KDReport封装一个指定格式的PDF文档输出例子
稍后添加一个GitHub地址链接