在 poppler-qt5 中,QDomDocument 用于解析 PDF 文件中的元素。Destination 是一个 PDF 元素,它可以指定文档中某个页面的位置。在 QDomDocument 中,可以使用以下代码来解析 Destination 元素:
QDomElement destElement = ...; // 获取 Destination 元素
QStringList destList = destElement.text().split(" ");
// 将 Destination 字符串按空格划分为多个部分
if (destList.size() >= 2) {
QString pageRef = destList[0]; // 第一个部分是页面引用
int pageNum = pageRef.toInt(); // 将页面引用转换为页面编号
QString destType = destList[1]; // 第二个部分是目标类型
if (destType == "XYZ" && destList.size() >= 5) {
// XYZ 目标类型表示绝对坐标位置
double x = destList[2].toDouble(); // X 坐标
double y = destList[3].toDouble(); // Y 坐标
double zoom = destList[4].toDouble(); // 缩放比例
QPointF destPos(x, y); // 创建目标点对象
// TODO: 使用 pageNum 和 destPos 来跳转到指定页面
} else if (destType == "Fit" || destType == "FitB") {
// Fit 和 FitB 目标类型表示适应页面大小
// TODO: 使用 pageNum 和 destType 来调整视图大小
}
}
上述代码首先将 Destination 字符串按空格划分为多个部分,然后根据目标类型解析出目标位置或适应方式。对于绝对坐标位置,可以创建一个 QPointF 对象表示目标点,然后使用该点和页面编号来跳转到指定页面;对于适应页面大小的目标,可以根据页面编号和目标类型调整视图大小。