fix: cursor position outside the margin of the page #609
This commit is contained in:
@@ -543,7 +543,8 @@ export class Position {
|
|||||||
if (!isLastArea) {
|
if (!isLastArea) {
|
||||||
// 页眉底部距离页面顶部距离
|
// 页眉底部距离页面顶部距离
|
||||||
const header = this.draw.getHeader()
|
const header = this.draw.getHeader()
|
||||||
const headerBottomY = header.getHeaderTop() + header.getHeight()
|
const headerHeight = header.getHeight()
|
||||||
|
const headerBottomY = header.getHeaderTop() + headerHeight
|
||||||
// 页脚上部距离页面顶部距离
|
// 页脚上部距离页面顶部距离
|
||||||
const footer = this.draw.getFooter()
|
const footer = this.draw.getFooter()
|
||||||
const pageHeight = this.draw.getHeight()
|
const pageHeight = this.draw.getHeight()
|
||||||
@@ -574,6 +575,51 @@ export class Position {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 正文上-循环首行
|
||||||
|
const margins = this.draw.getMargins()
|
||||||
|
if (y <= margins[1]) {
|
||||||
|
for (let p = 0; p < positionList.length; p++) {
|
||||||
|
const position = positionList[p]
|
||||||
|
if (position.pageNo !== positionNo || position.rowNo !== 0) continue
|
||||||
|
const { leftTop, rightTop } = position.coordinate
|
||||||
|
// 小于左页边距 || 命中文字 || 首行最后元素
|
||||||
|
if (
|
||||||
|
x <= margins[3] ||
|
||||||
|
(x >= leftTop[0] && x <= rightTop[0]) ||
|
||||||
|
positionList[p + 1]?.rowNo !== 0
|
||||||
|
) {
|
||||||
|
return {
|
||||||
|
index: position.index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 正文下-循环尾行
|
||||||
|
const lastLetter = lastLetterList[lastLetterList.length - 1]
|
||||||
|
if (lastLetter) {
|
||||||
|
const lastRowNo = lastLetter.rowNo
|
||||||
|
for (let p = 0; p < positionList.length; p++) {
|
||||||
|
const position = positionList[p]
|
||||||
|
if (
|
||||||
|
position.pageNo !== positionNo ||
|
||||||
|
position.rowNo !== lastRowNo
|
||||||
|
) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
const { leftTop, rightTop } = position.coordinate
|
||||||
|
// 小于左页边距 || 命中文字 || 尾行最后元素
|
||||||
|
if (
|
||||||
|
x <= margins[3] ||
|
||||||
|
(x >= leftTop[0] && x <= rightTop[0]) ||
|
||||||
|
positionList[p + 1]?.rowNo !== lastRowNo
|
||||||
|
) {
|
||||||
|
return {
|
||||||
|
index: position.index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// 当前页最后一行
|
// 当前页最后一行
|
||||||
return {
|
return {
|
||||||
index:
|
index:
|
||||||
|
|||||||
Reference in New Issue
Block a user