用LibreOffice生成或者更新的文档目录,用WPS Office打开,按住Ctrl键然后点击无法跟踪链接

**先说结论:**经过尝试,我发现用LibreOffice生成或者更新的文档目录(TOC:Table of Contents),用WPS Office打开,按Ctrl键再点击无法跟踪链接;用LibreOffice或者Microsoft Word打开按住Ctrl键可以点击跳转
例如,这个文档目录是用python通过UNO访问LibreOffice更新过的:
用LibreOffice生成或者更新的文档目录,用WPS Office打开,按住Ctrl键然后点击无法跟踪链接_第1张图片
1、用LibreOffice打开,按住Ctrl键,然后点击某个目录项,是可以跳转到链接的标题处的。
2、但是,用WPS Office打开,按住Ctrl键,然后点击某个目录项,出现出错提示,无法跳转到链接的标题处。看起来,WPS的兼容性是有点问题:
用LibreOffice生成或者更新的文档目录,用WPS Office打开,按住Ctrl键然后点击无法跟踪链接_第2张图片
下面,说说我对这个问题的发现、定位过程。
我本来是借鉴别人的代码,在python中通过UNO调用LibreOffice来更新用python-docx生成的文档的目录(TOC:table of contents)。
我参考了:https://github.com/typhoon-hil/LibreOfficeToPDF和https://www.linuxjournal.com/content/starting-stopping-and-connecting-openoffice-python
代码片段:

# 更新文档目录  
  dispatcher.executeDispatch(doc, ".uno:UpdateAllIndexes", "", 0, ())    
      
  # Saving
  opts = []
      
  if ext == '.docx':
      struct = uno.createUnoStruct("com.sun.star.beans.PropertyValue")
      struct.Name = "FilterName"
      # docx文档格式
      struct.Value = "MS Word 2007 XML"             
      opts.append(struct)    
      
  struct = uno.createUnoStruct('com.sun.star.beans.PropertyValue')
  struct.Name = 'URL'    
  struct.Value = fileUrl_new
  opts.append(struct)
  # 另存为        
  dispatcher.executeDispatch(doc, ".uno:SaveAs", "", 0, tuple(opts))
  # 关闭文档。如果不关闭的话,文档会被lock
  dispatcher.executeDispatch(doc, ".uno:CloseDoc", "", 0, ())

用WPS Office打开上面python代码生成的文档,我此处是D:/temp/pang_new.docx
发现文档目录是更新了,但按住Ctrl键然后点击某一个项,无法跳转到具体的标题处,也就是说超链接没有起作用:
用LibreOffice生成或者更新的文档目录,用WPS Office打开,按住Ctrl键然后点击无法跟踪链接_第3张图片
用LibreOffice生成或者更新的文档目录,用WPS Office打开,按住Ctrl键然后点击无法跟踪链接_第4张图片
我开始以为是不是我python代码中的更新命令不全或者不对,于是将代码dispatcher.executeDispatch(doc, “.uno:UpdateAllIndexes”, “”, 0, ())中的UpdateAllIndexes分别用下面的命令代替尝试:
StyleUpdateByExample
UpdateAll
UpdateAllIndexes
UpdateAllLinks
UpdateCharts
UpdateCurIndex
UpdateFields
UpdateInputFields
折腾了一顿,发现问题依然存在。冥思苦想,问题到底出在什么地方呢?我又尝试了下面方法,最终发现python代码的命令没有问题,而是WPS Office的兼容性有点问题

  • 尝试一:

用WPS打开,点击一下“更新目录”,然后按住Ctrl键点击,就可以跳转了。
用LibreOffice生成或者更新的文档目录,用WPS Office打开,按住Ctrl键然后点击无法跟踪链接_第5张图片

  • 尝试二:

或者用LibreOffice打开,点击目录中的项是可以跳转的。

  • 尝试三:

或者另外直接用WPS创建一篇新文档,填写内容,插入目录并更新保存,然后用LibreOffice打开这篇文档,点击目录中的项是可以跳转的。

  • 尝试四:

或者另外直接用LibreOffice创建一篇新文档,填写内容,插入目录并更新保存,点击可以跳转。然后用WPS打开这篇文档,点击目录中的项却不能跳转。

  • 尝试五:

我又装了Microsoft Office 2010,用其中的Microsoft word打开前面在WPS中点击不能跳转的文档目录,是可以跳转的。

总结:经过上面方法的尝试发现:同一个文档目录,尽管用WPS打开点击不能跳转,但用LibreOffice或者Microsoft Word打开点击都是可以跳转的,这证明了是WPS的兼容性有点问题。

你可能感兴趣的:(LibreOffice,python,WPS,Office,python,wps)