是否有可能確定何時Bookmark
包含TextTable
?我想通過XTextRange
對象來查看,但是,文檔沒有指定任何關於比較範圍的內容。如何檢查書籤是否包含表格?
0
A
回答
1
所以先從下面的代碼:
XBookmarksSupplier xBookmarksSupplier =
(XBookmarksSupplier)UnoRuntime.queryInterface(
XBookmarksSupplier.class, xComponent);
XNameAccess xNamedBookmarks = xBookmarksSupplier.getBookmarks();
Object bookmark = xNamedBookmarks.getByName("TextAndTable");
XTextContent xBookmarkContent = (XTextContent)UnoRuntime.queryInterface(
XTextContent.class, bookmark);
XTextRange xTextRange = xBookmarkContent.getAnchor();
這聽起來像你問如何確定是否有位於由xTextRange
規定的範圍內的一個或多個文本表格。
爲此,我通常使用View Cursor。這很慢,但普通文本光標無法遍歷不同的文本對象,所以如果範圍內有文本表或其他對象,它將會失敗。
這裏是我的Python類,這或許可以適應的Java:
def differentPlaces(oCurs1, oCurs2):
"""Test using compareRegion to see if two cursors are in different places.
If compareRegion fails, such as after a nested table, return False.
"""
try:
oText = oCurs1.getText()
return oText.compareRegionEnds(oCurs1, oCurs2) != 0
except IllegalArgumentException:
logger.info("Could not compare region.")
return False
class RangeCompare:
"""Compare the viewcursor to a text range (a location).
Can be useful when traversing a cursor over a range.
The range is expected not to be modified.
"""
def __init__(self, rangeEnd, viewCursor):
self.oVC = viewCursor
self.rangeEnd = rangeEnd
self.endX = -1
self.endY = -1
def getCoords(self):
if self.endY > -1:
return
# remember where we were, because we'll need to use the viewcursor
originalVC = self.oVC.getText().createTextCursorByRange(self.oVC)
self.oVC.gotoRange(self.rangeEnd, False)
self.endX = self.oVC.getPosition().X
self.endY = self.oVC.getPosition().Y
self.oVC.gotoRange(originalVC, False)
def compareVC(self):
"""Compare the viewcursor to the range.
Assume we are travelling with the viewcursor.
See if it is up to the end yet or not.
The comparison is done by checking the physical position of the cursor.
Returns -1 if the VC location is less than self.rangeEnd, 0 if it is
the same, and 1 if it is greater.
Returns -2 if they are on the same line but not in the same spot, and
it's not certain which location is greater.
"""
self.getCoords()
curX = self.oVC.getPosition().X
curY = self.oVC.getPosition().Y
if curY < self.endY:
logger.debug("%d < %d", curY, self.endY)
return -1
elif curY > self.endY:
logger.debug("%d > %d", curY, self.endY)
return 1
elif curY == self.endY:
if curX == self.endX:
if differentPlaces(self.oVC, self.rangeEnd):
# There is probably a word-final diacritic that doesn't
# change the position, so we're not to the end yet.
logger.debug("Including word-final diacritic.")
return -2
# We're at the end.
logger.debug(
"VC same loc as text range (%d, %d).", curX, curY)
return 0
else:
logger.debug("Probably haven't gone far enough.")
return -2
實例化類的東西,如rangeCompare = RangeCompare(xTextRange.getEnd(), xViewCursor)
。
將視圖光標移動到xTextRange
的開頭。然後繼續撥打xViewCursor.goRight(1, False)
進行循環。每次檢查光標是否位於TextTable中。當rangeCompare.compareVC() > 0
停止。
+0
謝謝你的回答,我會盡快檢查 – soon
相關問題
- 1. 如何檢測表是否包含表?
- 2. 如何檢查DataTable是否包含DataRow?
- 3. 如何檢查NSString是否包含'%'?
- 4. 如何檢查HashSet是否包含值?
- 5. 如何檢查url是否包含「main.php」
- 6. 如何檢查CGContext是否包含點?
- 7. 檢查表格的單元格是否包含某種形式
- 8. 如何檢查標籤是否包含特定的字符串?
- 9. 如何檢查div標籤是否包含部分視圖?
- 10. 檢查是否包含jQuery
- 11. 檢查是否行包含/ *
- 12. 檢查列表是否包含密鑰
- 13. PHP檢查MySQL表是否包含值
- 14. 檢查列表是否包含類型?
- 15. 檢查數據庫是否包含表
- 16. 如何檢查字符串是否包含空格
- 17. 如何檢查Django表單是否包含任何數據?
- 18. 如何檢查表單是否包含單選按鈕?
- 19. 如何檢查列表是否包含字符串
- 20. 如何檢查列表是否包含字節數組?
- 21. 如何檢查表是否包含Lua中的元素?
- 22. 如何檢查字符串是否包含字符列表?
- 23. 如何檢查列表中是否只包含無python
- 24. Longs列表如何檢查它是否包含值?
- 25. 序言 - 如何檢查列表是否包含某些元素?
- 26. 如何檢查嵌套列表是否包含特定值C#
- 27. 如何檢查布爾值列表是否包含值?
- 28. Django - 如何檢查id是否包含在表列中?
- 29. 序言 - 如何檢查列表是否包含某個項目
- 30. JavaScript:如何檢查表格的第二列是否包含特定文本
可以肯定的是,你問書籤是否位於* TextTable內?這很容易確定。我在下面的回答中假設你的意思是*包含*,如問題所述,並且書籤橫跨一系列文本而不僅僅是一個位置。 –
不,我在**書籤**中詢問**表**。 – soon