持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情
📒博客首页:何名取 的个人主页 - 文章 - 掘金 (juejin.cn)
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
❤️期待一起交流!
🙏作者水平很有限,如果发现错误,求告知,多谢!
🌺有问题可私信交流!!!
QtQuickPDF
前言
Qt6.3自带有TP(预览版)的Qt PDF模块,分为widgets版和quick版。本节介绍一下QtQuick.Pdf模块。
Qt6.2和Qt5.15是没有单独的PDF模块的,需要自己编译,编译之前的环境搭建非常的麻烦。
使用pdf模块之前,需要在.pro中添加:
QT += pdf
在.qml文件中添加:
import QtQuick.Pdf
PDF模块的类型
| 类型名 | 描述 |
|---|---|
| PdfDocument | PDF文档的表示形式 |
| PdfLinkModel | PDF文档中链接的表示形式 |
| PdfNavigationStack | PDF文档中访问的目的地的历史 |
| PdfSearchModel | PDF文档中文本搜索结果的表示形式 |
| PdfSelection | PDF文档中文本选择的表示形式 |
PdfDocument QML Type
属性列表
| 属性 | 类型 | 描述 |
|---|---|---|
| author | string | 只读,PDF文件作者 |
| creationDate | date | 只读,PDF文件创建日期 |
| creator | string | 只读,如果文档是从另一种格式转换为PDF,则此属性保存创建原始文档的软件的名称。 |
| error | string | 只读,此属性保存当前错误的翻译后字符串表示(如果有的话)。 |
| keywords | string | 只读,此属性保存与文档关联的关键字。 |
| maxPageHeight | real | 只读,此属性保存文档中最高页面的高度(以点为单位)。 |
| maxPageWidth | real | 只读,此属性保存文档中最宽页面的宽度(以点为单位)。 |
| modificationDate | date | 只读,此属性保存最近修改文档的日期和时间。 |
| pageCount | int | 只读,此属性保存PDF包含的页数。 |
| password | string | 此属性保存文档密码。如果发出passwordrerequired()信号,则UI应该提示用户,然后设置此属性,以便继续打开文档。 |
| producer | string | 只读,如果文档从另一种格式转换为PDF,则此属性保存将其转换为PDF的软件的名称。 |
| source | url | 此属性保存一个指向要加载的PDF文件的URL。 |
| status | enum | 这个属性告诉文档的当前状态。可能的值有: PdfDocument.Null-创建文档或关闭文档之后的初始状态。 PdfDocument.Loading-调用load()之后和文档完全加载之前的状态。 PdfDocument.Ready-文档完全加载并可以访问其数据时的状态。 PdfDocument.Unloading-对打开的文档调用close()后的状态。此时,文档仍然有效,可以访问其所有数据。 PdfDocument.Error-加载后的状态,如果加载失败。 |
| subject | string | 只读,这个属性保存文档的主题。 |
| title | string | 只读,此属性保存文档的标题。可以将其绑定到Window的标题属性。 |
信号
passwordRequired()
当PDF需要密码才能打开时,就会发出此信号。典型PDF查看器中的UI应该提示用户输入密码,然后在用户提供密码时设置密码属性。
相应的处理程序是onPasswordRequired。
方法
size pagePointSize(int page)
以点为单位返回给定页面的大小。
PdfLinkModel QML Type
PdfLinkModel为指定页面包含的每个链接提供几何图形和目标。
可用的模型角色有:
| 类型 | 描述 |
|---|---|
| rect | 链接周围的边框。 |
| url | 如果链接是一个web链接,跳转到这个URL;否则为空URL。 |
| page | 如果链接是内部链接,则链接应该跳转到的页码;否则为-1。 |
| location | 如果链接是内部链接,则链接应该跳转到的页面上的位置。 |
| zoom | 如果链接是内部链接,则目标页面上的预期缩放级别。 |
属性列表
| 属性 | 类型 | 描述 |
|---|---|---|
| document | PdfDocument | 此属性保存可在其中找到链接的PDF文档。 |
| page | int | 此属性保存要在其上找到链接的页码。 |
PdfNavigationStack QML Type
PdfNavigationStack会记住用户在PDF文档中访问过的目的地,并提供向后和向前遍历的能力。
属性列表
| 属性 | 类型 | 描述 |
|---|---|---|
| backAvailable | bool | 如果返回目的地在历史中可用,则为真。 |
| currentLocation | point | 此属性保存正在查看的页上的当前位置。 |
| currentPage | int | 此属性保存正在查看的当前页。如果没有当前页,则保持-1。 |
| currentZoom | real | 此属性保存正在查看的页面上的放大比例。 |
| forwardAvailable | bool | 如果转发目的地在历史中可用,则为真。 |
信号
jumped(int page, point location, qreal zoom)
该信号仅在调用forward()、back()或push()时发出。注意:信号是在调用update()时发出的。相应的处理程序是onJumped。
方法列表
| 方法 | 描述 |
|---|---|
| void back() | 弹出堆栈,将currentPage、currentLocation和currentZoom属性更新为最近查看的目标,然后发出jump()信号。 |
| void forward() | 返回到调用back()之前所查看的页面、位置和缩放级别,然后发出jump()信号。 |
| void push(int page, point location, qreal zoom, bool emitJumped) | 将给定的目的地(包括页面、位置和缩放)添加到已访问位置的历史记录中。如果emitjump为false,则不会触发jumped()信号。 |
| void update(int page, point location, qreal zoom) | 修改当前目标,包括页面、位置和缩放。 |
PdfSearchModel QML Type
PdfSearchModel提供了在文档中搜索文本字符串并获得每个页面上匹配的几何位置的能力。
属性列表
| 属性 | 类型 | 描述 |
|---|---|---|
| currentPage | int | currentresultboundingpolygon应该提供过滤搜索结果的页面。 |
| currentPageBoundingPolygons | list<list<point>> | 一组可以绑定到PathMultiline实例的paths路径属性,在currentPage上找到搜索结果的所有区域周围呈现一批矩形。 |
| currentResult | int | currentPage上的结果索引,currentresultboundingpolygon应该提供要突出显示的区域。 |
| currentResultBoundingPolygons | list<list<point>> | 一组可以绑定到PathMultiline实例的paths路径属性,以呈现包含currentPage上的搜索结果currentResult的区域周围的一批矩形。在UI中,这通常用于一次突出显示一个搜索结果: |
| currentResultBoundingRect | point | 包含当前所有tresultboundingpolygon的边界框。当这个属性改变时,一个可滚动视图应该自动滚动,以确保这个区域是可见的;例如,它可以尝试将左上角定位在它自己的视口的左上角附近,受可滚动区域的限制。 |
| searchString | string | 要搜索的字符串。 |
方法
list<list<point>> boundingPolygonsOnPage(int page)
返回一组可以绑定到PathMultiline实例的paths路径属性,该实例用于渲染页面上所有匹配位置周围的一批矩形。
PdfSelection QML Type
PdfSelection在一个边界框中提供从一点到另一点的文本字符串及其几何图形。
要使用鼠标修改选择,请将fromPoint和toppoint绑定到输入处理程序的适当属性,以便将它们分别设置为拖动手势的开始和结束位置;并绑定hold属性,使其在拖动手势时设置为true,在手势结束时设置为false。
PdfSelection还直接处理输入法查询,以便文本选择句柄可以在iOS等平台上使用。为此,它必须有键盘焦点。
属性列表
| 属性 | 类型 | 描述 |
|---|---|---|
| fromPoint | point | 从页面左上角以像素为单位的起始位置,从中查找所选文本。这可以绑定到质心。按下DragHandler的位置,以开始从用户按下鼠标按钮并开始拖动的位置选择文本。 |
| geometry | list<list<point>> | 一组路径,可以绑定到PathMultiline实例的paths属性中,以呈现选择中包含的文本区域周围的一批矩形。 |
| hold | bool | 控制在fromPoint和toppoint发生更改时是否保留现有选择项。当释放鼠标或接触点时,此属性可设置为true,这样所选内容不会因点绑定更改而丢失。 |
| page | int | 要搜索的页码。 |
| renderScale | real | 页面呈现时的点与像素的比率。 |
| string | string | 字符串 |
| toPoint | point | 页面左上角以像素为单位的结束位置,从中查找所选文本。这可以绑定到质心。例如,DragHandler将在用户当前拖动鼠标的位置结束文本选择。 |
方法
void copyToClipboard()
将纯文本从string属性复制到系统剪贴板。