如何用Python为LibreOffice Writer插入带日期的Annotation
解决com.sun.star.text.textfield.Annotation批注不显示日期的问题
我之前也踩过这个坑!问题出在你没正确初始化Date对象——虽然API文档标注Date是com.sun.star.util.Date类型的引用,但直接修改anno.Date.Year这类子属性根本没用,因为此时anno.Date大概率还是空引用,底层没法把修改后的属性绑定到批注实例上。
正确的思路是先创建一个完整的com.sun.star.util.Date实例,设置好年月日之后,再把这个对象赋值给批注的Date属性。
修正后的代码
# 创建批注实例 anno = model.createInstance("com.sun.star.text.textfield.Annotation") anno.Content = "this is my annotation/comment" anno.Author = doc.DocumentProperties.Author # 单独创建并初始化Date对象 date_obj = model.createInstance("com.sun.star.util.Date") date_obj.Year = 2020 date_obj.Month = 5 date_obj.Day = 18 # 将Date对象赋值给批注的Date属性 anno.Date = date_obj
为什么原来的代码无效?
你之前直接操作anno.Date的子属性,但com.sun.star.text.textfield.Annotation的Date属性需要接收一个已实例化的Date对象,而非对默认的空引用做属性修改。只有把完整的Date对象赋值过去,批注才会正确读取并显示日期。
你之前尝试的代码:
anno = model.createInstance("com.sun.star.text.textfield.Annotation") anno.Content = "this is my annotation/comment" anno.Author = doc.DocumentProperties.Author anno.Date.Year = 2020 anno.Date.Month = 5 anno.Date.Day = 18
对应的无日期显示效果:
内容的提问来源于stack exchange,提问作者Rolf of Saxony
相关产品推荐
相关产品推荐

